2012-01-21 8 views
1

私は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より厳密ではないコンパイラを使用していると私は間違っているとは思っていませんでした。

ヘルプ?

+1

あなたの質問は何ですか?クラスの外で 'override'を使うことができないのはなぜですか?なぜそれがFlash IDEでは動作しますが、Flash Builderでは動作しないのですか?このスタイルを許可または使用するのは間違いです。 – Kapep

答えて

2

コードはFlash IDEでもコンパイルしないでください。構文エラーが含まれています。 コンストラクタの後にクラス宣言を閉じました。その中括弧を一番下に動かすとすべてがうまくいくはずです。

package 
{ 
    import zakariya.layout.RootLayoutSprite; 

    public class DoesThisEvenWork extends RootLayoutSprite 
    { 
        public function DoesThisEvenWork() 
        { 
            ... 
        } 
    } // <= your class ends here 

    // everything below is outside of the class! 

    override public function onLayoutUpdated():void 
    { 
     ...} 
} 
+0

まあ、それは完全に恥ずかしいです。ありがとう。 – TomorrowPlusX

関連する問題