コンストラクタでstageを参照しているswfを外部から読み込むとnullが返りエラーになります。
stageの参照はタイミングを意識して使った方がいいみたいです。
でないとほんとに泣き見ますね。
HTMLからFlashに変数を渡す最も手っ取り早い方法として
Flash Varsがあります。
プレーヤーのバージョンに依存することから
AS2のころは使用を控えていましたが、
これからは積極的に使っていきたいと思います。
Flash側の受け取り方が大きく変わったようなのでその辺りをメモ。
読み込まれたデータはドキュメントクラス、もしくはタイムラインのDisplayObjectのloaderInfoプロパティに格納されるそうです。
FlashVars.as
package {
import flash.display.LoaderInfo;
import flash.display.MovieClip;
public class FlashVars extends MovieClip {
public function FlashVars():void {
var lip:Object=loaderInfo.parameters;
for (var i:String in lip) {
trace(lip[i]);
}
}
}
}
何かと入用なカスタムイベントに関して、簡単な例です。
一秒後にイベントを配信するクラスです。
Timerクラスを利用したイベント部分をその他のもの置き換えてみてください。
クラス
package {
import flash.events.Event;
import flash.events.EventDispatcher;
import flash.utils.Timer;
import flash.events.TimerEvent;
public class Hoge extends EventDispatcher {
public static const EVENT_HOGE:String="event_hoge";
private var timer:Timer;
public function Hoge():void {
timer=new Timer(1000,0);
timer.addEventListener(TimerEvent.TIMER, timerEnd);
timer.start();
}
private function timerEnd(e:TimerEvent):void {
dispatchEvent(new Event(Hoge.EVENT_HOGE));
timer.removeEventListener(TimerEvent.TIMER, timerEnd);
timer.stop();
}
}
}
タイムライン
import Hoge;
var h:Hoge=new Hoge();
h.addEventListener(Hoge.EVENT_HOGE, onStart);
function onStart(e:Event):void {
trace("イベント受け取りました!!");
}
イベント配信用のストリングをpublic staticで宣言しているところが
僕的なチェック箇所。
できればEventDispatcherをextendsせずに
importのみで済ませたいんですが・・・。無理なのかな?
まだまだ修行不足です。
AS3では今までなじみ深かった『getURL』がなくなりました。
代わりに『navigateToURL』を使用します。
import flash.net.navigateToURL; import flash.net.URLRequest; var url:URLRequest = new URLRequest( "http://www.google.co.jp/" ); var target:String = "_blank"; navigateToURL( url ,target);
クラス化したときにはimport文をお忘れなく。
今の所僕は100%の確率で忘れてます・・・。
以前に使っていたページ分割用のプラグイン、MTPaginateがMT4.22では使えなくなっていました。
システムプラグインの項目には表示されているのですが、
タグを打ち込んでもエラーになるだけでした。
仕方ないので、代わりにPageButeというのを使うことにしました。
一番の特徴は、htmlでもページ分割が出来る所でしょう。
MTはバージョンが変わるごとに色々困ってる気がします・・・。

最近のコメント