Archive
読み込んだ画像を、matrixで歪ませながら拡大させる。
サイトの作成用に作った。
追記
構造は、fork前と同じです。
_containerの中に、_canvas,_p0,_p1,_p2,_p3が入ってます。
ゆがんでいるイメージを描画しているのはdraw()のなかのbeginBitmapFill()です。
歪ませるのにはMatrixが必要です。そのMatrixは_getTransformMatrix()で設定しています。
このMatrixの設定のために、_p0,_p1,_p2,_p3(fork前のインスタンス名は_cP0,_cP1,_cP2,_cP3)の位置情報を使用しています。
手軽に試す場合は、
1.bitmapImageStringArrayのイメージURIを差し替える。
2.TestImageの画像サイズ(縦横400)を適宜変更する。
3.Tweenerのプロパティをいじる
などしてくみてださい。
yahoo pipes のデータがFLASHでセキュリティーサンドボックス侵害を起こす件
yahoo pipesのデータをFLASHで読もうとしたら、
“#2048: セキュリティサンドボックス侵害”
となる。yahoo pipesにはポリシーファイルがおいてあるので、理解できず、散々悩んだ。
URIの”http://pipes.yahoo.com/”を、”http://pipes.yahooapis.com/”に代える必要があるということだった。
package {
import flash.display.Sprite;
import flash.events.Event;
import flash.display.Loader;
import flash.net.URLRequest;
import flash.net.URLLoader;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
public class FlashTest extends Sprite {
private var myLoader:URLLoader = new URLLoader();
public var myArray:Array = new Array();
public function FlashTest() {
// yahoo pipesのテスト1
//security sandbox 侵害になるのがなぜかわかった。
myLoader.addEventListener (Event.COMPLETE,COMPLETE);
//yahoo pipesが吐き出すアドレスの"http://pipes.yahoo.com/"を"http://pipes.yahooapis.com/"にかえなきゃなんない。
//myLoader.load(new URLRequest("http://pipes.yahoo.com/pipes/pipe.run?_id=febf0c71127b8a1538ebe52fb5b30878&_render=json&_rand="+Math.random()));
myLoader.load(new URLRequest("http://pipes.yahooapis.com/pipes/pipe.run?_id=755b773d73a8faef78c9dd5a6dfff220&_render=rss&_rand="+Math.random()));
}
private function COMPLETE(e:Event = null):void
{
var myXML:XML = new XML(myLoader.data);
for each (var prop:XML in myXML.channel[0].item.title) {
myArray.push(prop);
}
myArray.reverse();
var myTextField:TextField=new TextField();
myTextField.width=450;
myTextField.autoSize=TextFieldAutoSize.LEFT;
myTextField.wordWrap=true;
addChild(myTextField);
myTextField.text=myArray.toString();
}
}
}
Event.ADDED_TO_STAGEをドキュメントクラスで使う理由
Event.ADDED_TO_STAGEを、なあなあで使ってたので、きっちり調べてみる。
stage.stageWidthなど、stageにある値を使いたいとき。
コンストラクタで、値を取得しようとすると、失敗することがあります。
(もっというと、レンダリングスピードの遅いie6,ie7でよく失敗します)
このとき、「stage.stageWidthがとれません」といった、わかりやすいエラーは出ません。
stage.stageWidthを参照しているBitmapDataや、stage.stageWidthを代入した変数などで、エラーが出ます。
「無効です」「nullの値です」とか言われるのです。
それは困るw。
回避するために、Event.ADDED_TO_STAGEを使います。
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
//ここでstageのプロパティを取得する
}
このコードは、flash Developでクラスを作ると、自動的に生成してくれます。
参考 fladdict blend AS3 で stageを参照する場合の注意点
追記
タイトルが誤解をうんでいたので、改題したよ。
「progression 最初の2歩目」のファイルをアップしました。
前回の「元気になるprogression講座最初の2歩目」のファイルを提供します。
http://www.sinketu.com/test/2home.zip
もっと手をいれて、世に出したかったですが、
結局そのままさらします。
すみません!次回にそのエネルギーをつぎ込むということで!
