fladdict.netさんと同じ現象かなと思うんだけど,どうもフルパッケージ名でしていするのとしないのとで挙動が変わる…
なんでだろ…??
ちょっと試してないソースだから動くか分からないけどこんな感じ.
// [class Parent]
class package.Parent {
private static var initFlag:Boolean = Parent. initialize();
private static function initialize():Boolean {
trace('Parent.initialize() called.');
return true;
}
}
// [class Child]
import package.*;
class package.Child extends Parent{
private static var initFlag:Boolean = Child.initialize();
private static function initialize():Boolean {
trace('Child.initialize() called.');
return true;
}
}
// フレーム
package.Parent;
package.Child;
// 結果
// Parent.initialize() called.
// Parent.initialize() called.
これをパッケージとかクラス名を指定せずに
// [class Parent]
class package.Parent {
private static var initFlag:Boolean = initialize(); // ここ変えた
private static function initialize():Boolean {
trace('Parent.initialize() called.');
return true;
}
}
// [class Child]
import package.*;
class package.Child extends Parent{
private static var initFlag:Boolean = initialize(); // ここ変えた
private static function initialize():Boolean {
trace('Child.initialize() called.');
return true;
}
}
// 結果
// Parent.initialize() called.
// Child.initialize() called.
とかやると期待通り…
むしろ逆な気もするけど…
8からじゃないよね??
んー,なんでだぁー!ヽ(`Д´)ノガー
追記)
8からじゃないや...
さらに追記)
AS1.0で書くとこういうことですよね??>だれ?
// パッケージ空間作成
_global.package = {};
// class Parent
_global.package.Parent = function() {
};
_global.package.Parent.initialize = function() {
trace('Parent.initialize() called.');
};
_global.package.Parent.initFlag = _global.package.Parent.initialize();
// class Child
_global.package.Child = function() {
};
_global.package.Child.prototype = new _global.package.Parent();
_global.package.Child.initialize = function() {
trace('Child.initialize() called.');
};
_global.package.Child.initFlag = _global.package.Child.initialize();
// 出力
// Parent.initialize() called.
// Child.initialize() called.
んー,期待通り.(._・)>?
trackback for this entry URL:
http://blog.graffiti-web.org/mt/mt-tb.cgi/332