2011-12-13 14 views
0

AS3 - ムービークリップオブジェクトのクリックイベントを処理するために汎用ボタンハンドラを使用します。過去4時間、私はこのムービークリップに画像を追加しようとしていました(* * *)オブジェクトを参照してください。AS3「拡張」ムービークリップに画像を追加

コード(Iカットビットを貼り付けたが、これはすべてのエラーなしでコンパイル)は、このコードで

btPlay = new mcButtonPlay(this,"ClickMe",GameImage); // GameImage is an BitmapData object 

public class mcButtonPlay extends navigationButtonHandler { 
    public function mcButtonPlay(Parent:MovieClip,Text:String,GameImage:BitmapData) { 
     super(Text); 
     if (GameImage != null) {     
      var ImageBitMap:Bitmap = new Bitmap(GameImage); 
      this.addChild(ImageBitMap); // * * * This doesn’t show 
      Parent.addChild(ImageBitMap); // Works just to test the image 
     }      
    } 
} 

public class navigationButtonHandler extends MovieClip { 
    public function navigationButtonHandler(Text:String) { 
     ChangeButtonTargetText(Text); 
     Parent.addChild(this); 
    } 
} 
+0

問題の原因は不明ですが、ここでは、変数とクラスの大文字小文字の区別についてのhttp://opensource.adobe.com/wiki/display/flexsdk/Coding+ConventionsのAS3コーディング規約をご覧ください。名前。 –

+0

movieclipを拡張しているクラスを拡張している間にパラメータをmcButtonPlayに渡すことができないので、これはうまくいかないと思います...あなたにエラーがスローされませんか? – Eric

+0

クラス名を常に大文字にし、変数名を大文字にしないでください。それらは強い慣習です。 サフィックス「ハンドラ」は、イベントハンドラ(関数)に対してのみ使用してください。 MovieClipを指定する場合は、接尾辞_mcを追加します。 –

答えて

0

はスーパーを交換することによってそれを修正し、周りの子ロジックを追加するマネージド:

public class mcButtonPlay extends navigationButtonHandler { 
    public function mcButtonPlay(Parent:MovieClip,Text:String,GameImage:BitmapData) { 
     if (GameImage != null) {     
      var ImageBitMap:Bitmap = new Bitmap(GameImage); 
      this.addChild(ImageBitMap); // * * * This doesn’t show 
      Parent.addChild(ImageBitMap); // Works just to test the image 
     }      
     super(Text); 
    } 
} 

ないアイデアなぜかかわらず!

0
 this.addChild(ImageBitMap); // * * * This doesn’t show 
     Parent.addChild(ImageBitMap); // Works just to test the image 

ImageBitMapがされています'this'から削除され、 'Parent 'ですので、' this 'には表示されません。

この2行目を削除し、まだ動作しているかどうか教えてください。

編集:

ステージまたはディスプレイ階層にbtPlayを追加していますか?

例えば、

btPlay = new mcButtonPlay(this,"ClickMe",GameImage); 
this.addChild(btPlay); 
+0

2行目の有無にかかわらず試してみましたが、違いはありません。 – user385762

0
public class navigationButtonHandler extends MovieClip { 
    public function navigationButtonHandler(Text:String) { 
     ChangeButtonTargetText(Text); 
     Parent.addChild(this); //<--------???? 
    } 
} 

Parentが質問からコピーしたコードの上の部分にはどこから来るのでしょうか? Parentが得られないため、navigationButtonHandlerクラスはステージに追加されません。したがって、拡張されたクラスもステージに追加されることはありません。このクラスは、あなたのイメージをmcButtonPlayクラスにaddChildしても表示されません。
拡張コンストラクタはParentパラメータを渡しますが、基本クラスは渡しません。それは私にとっては不思議で、コンパイルすべきではありません。あるいは、場面の背後にある静的なものをやっていますか?

コメントに記載されているように大文字のスタイルで作業してください。一般的な規則に従えば、実際にはエラーを見つけて見つけやすくなります!

+0

これは問題だと思います。 –

関連する問題