私は10年近くにActionScriptを書いています。私はいつもTextMateのような別々のテキストエディタを使ってコードを書いて、それをコンパイルするためにFlash IDEを使いました。今週末にFlash Builderを試してみることにしました。これは明らかに前進の道だからです。Flash Builderでは継承されたメソッドをオーバーライドできません。私はうんざりしています
とにかく。私はOSX上でFlash Builder 4.6を使用しています - 今朝インストールされていますが、それに尽きることはありません - 単純な "Actionscript Mobile App"を構築しました。(私の現在のプロジェクトは仕事場のモバイルアプリケーションです。フラッシュIDE)。
package
{
import zakariya.layout.RootLayoutSprite;
public class DoesThisEvenWork extends RootLayoutSprite
{
public function DoesThisEvenWork()
{
super();
trace("hello... what's my size: " + this.size);
}
}
override public function onLayoutUpdated():void
{
super.onLayoutUpdated();
}
override public function onSizeChanged():void
{
super.onSizeChanged();
trace('onSizeChanged..., new size: ' + this.size);
}
}
クラスRootLayoutSpriteがLayoutSpriteから派生し、私が書いたと大小のプロジェクトの数十に使用されているレイアウトの管理APIの一部です。 onLayoutUpdatedメソッドとonSizeChangedメソッドは、LayoutSpriteとsizeプロパティで定義されています。
定義は多かれ少なかれので、次のようになります。
package zakariya.layout
{
public class LayoutSprite extends Sprite {
/*
Called after this Sprite's size changes, before layout of children is executed
*/
public function onSizeChanged():void
{}
/*
Called after this Sprite's size changes, after layout of children is executed
*/
public function onLayoutUpdated():void
{}
}
}
zakariya.layoutコードは、ローカルリポジトリ内の生のコードです - SWCにコンパイルされていない - それは私が追加したフォルダ構造内のすべてのですプロジェクトのソースパスに追加します。 Flash Builderは、RootLayoutSpriteを認識するため、基本クラスをはっきりと認識します。
私はこれを構築しようとした際、私は、次を得る:
1006: A super expression can be used only inside class instance methods. DoesThisEvenWork.as /DoesThisEvenWork/src line 17 Flex Problem
1010: The override attribute may be used only on class property definitions. DoesThisEvenWork.as /DoesThisEvenWork/src line 15 Flex Problem
1010: The override attribute may be used only on class property definitions. DoesThisEvenWork.as /DoesThisEvenWork/src line 21 Flex Problem
1020: Method marked override must override another method. DoesThisEvenWork.as /DoesThisEvenWork/src line 15 Flex Problem
1020: Method marked override must override another method. DoesThisEvenWork.as /DoesThisEvenWork/src line 21 Flex Problem
ので、Flash Builderでは、私はこれらのメソッドをオーバーライドすることはできません。 'override'属性を取り除くと、Flash Builderは、メソッドが基本クラスで定義されていると不満を持ちます。 Facepalm。
この単純なコードは、Flash IDEでうまく動作します。
私は正に何が起こっているのか分かりません。私はFlash Builderの設定にだまされていません。私はFlexプロジェクトを書くことはなかったので、Flash Builderを何年も避けてきました。私は自由な時間にC++を書くので、Flash Builder Eclipseツールチェーンについては何も知りません。
私は、Flash IDEの方がFlash Builderより厳密ではないコンパイラを使用していると私は間違っているとは思っていませんでした。
ヘルプ?
あなたの質問は何ですか?クラスの外で 'override'を使うことができないのはなぜですか?なぜそれがFlash IDEでは動作しますが、Flash Builderでは動作しないのですか?このスタイルを許可または使用するのは間違いです。 – Kapep