« AS3 筆初め | メイン | MovieClassic »
2007年6月 2日
[as3] 警告 Warning: 1090: Migration issue
やたらといろいろ定義しないといけないのが面倒なのと、覚えるのも一苦労しそうなので
AS2 ベースのイベント、メソッドを持ったクラスを作成。
たぶんみんなおんなじようなことはやってるだろうから、探せばどっかにあるんだろうけど
まずは AS3 の仕組みを理解するためにも、もんどりうって作ってみる。
以下はその時の経過をメモ。
クラス内に
と警告されてしまう。
onLoad, onRelease, onPress 等も同様。
public ステートメントを付けると更に上書きもできなくなってしまう。
でも onEnterFrame や onRelease は定義した直後から自動的にイベントを受け取ってほしいので
でもこれだと同じく警告が出てしまう。
で、Proxy クラスを用いて onEnterFrame プロパティに
無理やり setter , getter を再定義する方法を試みてみる。
こんな感じに。
でもこれだとどうしても this.onEnterFrame と書くのが難しかった。
いろいろ試行錯誤していると、
getter 無しだと警告が出てなかった。
理由は良く分からない。
でもこれだと onEnterFrame で定義した function を抜き出すことができないので
これだと警告も出ないし、モーマンタイ。
この調子でいろいろイベントを作成していく。
気にくわないのは onSetFocus の getter の名前が
「getSetFocus」になってしまったこと。
get なんだか set なんだか。。。
AS2 ベースのイベント、メソッドを持ったクラスを作成。
たぶんみんなおんなじようなことはやってるだろうから、探せばどっかにあるんだろうけど
まずは AS3 の仕組みを理解するためにも、もんどりうって作ってみる。
以下はその時の経過をメモ。
クラス内に
public function onEnterFrame():void {}
と書くとWarning: 1090: Migration issue: The onEnterFrame is not triggered automatically by Flash Player at run time in ActionScript 3.0. You must first register this handler for the event using addEventListener ( 'enterFrame', callback_handler).
と警告されてしまう。
onLoad, onRelease, onPress 等も同様。
public ステートメントを付けると更に上書きもできなくなってしまう。
public var onEnterFrame:Function;これだと警告は出ない。
でも onEnterFrame や onRelease は定義した直後から自動的にイベントを受け取ってほしいので
public function set onEnterFrame( func:Function ):void
{
__onEnterFrame = func;
this.addEventListener( Event.ENTER_FRAME, __enterFrameCall );
}
public function get onEnterFrame():Function
{
return __onEnterFrame;
}
private function __enterFrameCall( e:Event ):void
{
__onEnterFrame.apply( target , null );
}
private var __onEnterFrame:Function;
と書きたい。でもこれだと同じく警告が出てしまう。
で、Proxy クラスを用いて onEnterFrame プロパティに
無理やり setter , getter を再定義する方法を試みてみる。
override flash_proxy function getProperty( name )
{
return classicEvent['__'+name];
}
override flash_proxy function setProperty( name, func ):void
{
var str = name.toString();
var tmp = str.split('on').join('');
classicEvent['__'+name] = func;
classicEvent['__set'+tmp+'Event']();
}
こんな感じに。
でもこれだとどうしても this.onEnterFrame と書くのが難しかった。
いろいろ試行錯誤していると、
public function set onEnterFrame( func:Function ):void
{
__onEnterFrame = func;
}
private var __onEnterFrame:Function;
getter 無しだと警告が出てなかった。
理由は良く分からない。
でもこれだと onEnterFrame で定義した function を抜き出すことができないので
public function set onEnterFrame( func:Function ):void
{
__onEnterFrame = func;
}
public function getEnterFrame():Function
{
return __onEnterFrame;
}
private var __onEnterFrame:Function;
として、中身の取得も可能にする。これだと警告も出ないし、モーマンタイ。
この調子でいろいろイベントを作成していく。
気にくわないのは onSetFocus の getter の名前が
「getSetFocus」になってしまったこと。
get なんだか set なんだか。。。
トラックバック(0)
このブログ記事を参照しているブログ一覧: 警告 Warning: 1090: Migration issue
このブログ記事に対するトラックバックURL: http://system.seyself.com/mt-tb.cgi/408

コメントする