自作のcallLater関数(笑)
またか、、、
AS3でしょっちゅう出会うトラブルです、ホント。
オブジェクトの widthプロパティがオブジェクト作成直後に取得できないってアレです。
慣れるとああ、そうだった、で済みますが最初はどういうこった?どないすんねん?と悩んだものです。
今やってるのがFlexではなくcallLaterもできないから、自分でMyFunction.callLater()ってなstatic関数を作ってしまいました。
↓コードはこんな感じで(読みにくくてごめんなさい)。
public static function callLater(func:Function , spr:Sprite):void {
spr.addEventListener(Event.ENTER_FRAME , efHandler);
var step:uint = 0;
function efHandler(e:Event):void {
if (step >= 1) {
spr.removeEventListener(Event.ENTER_FRAME , efHandler);
func();
}else {
step++;
}
}
}
リスナー設定用にSpriteのオブジェクトを渡し、1フレーム進んだら指定の関数をコールする、ってだけ。
うーん。
なんというか、苦し紛れというか、美しくないというか、、、
そもそも、1フレーム遅れるのでかなり要注意だよ、全く。
AS3でしょっちゅう出会うトラブルです、ホント。
オブジェクトの widthプロパティがオブジェクト作成直後に取得できないってアレです。
慣れるとああ、そうだった、で済みますが最初はどういうこった?どないすんねん?と悩んだものです。
今やってるのがFlexではなくcallLaterもできないから、自分でMyFunction.callLater()ってなstatic関数を作ってしまいました。
↓コードはこんな感じで(読みにくくてごめんなさい)。
public static function callLater(func:Function , spr:Sprite):void {
spr.addEventListener(Event.ENTER_FRAME , efHandler);
var step:uint = 0;
function efHandler(e:Event):void {
if (step >= 1) {
spr.removeEventListener(Event.ENTER_FRAME , efHandler);
func();
}else {
step++;
}
}
}
リスナー設定用にSpriteのオブジェクトを渡し、1フレーム進んだら指定の関数をコールする、ってだけ。
うーん。
なんというか、苦し紛れというか、美しくないというか、、、
そもそも、1フレーム遅れるのでかなり要注意だよ、全く。
スポンサーサイト