4

AS3 を学習しようとしていますが、小さな問題に遭遇しました。

リスナーを追加する Bitmap クラスがありMouseEvent.CLICKますが、イベントがディスパッチされていないようです。

Flashdevelop を使用して AS3 コードを記述し、Flex をコンパイルします。

私には2つのクラスがEnemy.asあり、Player.as

は次のPlayer.asようになります。

package Player 
{
import flash.display.Sprite;
import flash.events.MouseEvent;

[Embed(source="../../assets/leek.swf", symbol="Leek")]

public class Player extends Sprite 
{
    public function Player() 
    {
        trace("Player constructed");
        addEventListener(MouseEvent.CLICK, handleClick);
    }

    private function handleClick(e:MouseEvent):void 
    {
        trace("Clicked Player");
    }

}

}

は次のEnemy.asようになります。

package enemies 
{

import flash.display.Bitmap;
import flash.events.MouseEvent

[Embed(source="../../assets/gardengnome.png")]

public class Enemy extends Bitmap 
{
    public function Enemy() 
    {
        trace("enemy constructed");
        addEventListener(MouseEvent.CLICK, handleClick);
    }

    private function handleClick(e:MouseEvent):void 
    {
        trace("Clicked Enemy");
    }

}

}

2 つのクラスはほとんど同じですが、1 つは で、チュートリアルから取得しSpriteたファイルからシンボルを埋め込みました。もう 1 つは で、それにファイルを埋め込みました。swfBitmappng

Playerクラス (スプライトでシンボルを使用するクラス) は、MouseEvent.CLICKプロジェクトを実行して Player 画像をクリックすると起動しますが、Enemyクラスは起動しません。

コンパイルの警告やエラーがないため、正確に何が問題なのかを理解するのに苦労しています。一方が aSpriteでもう一方が a であるBitmapためですか、それとも一方が a から準備されたシンボルを使用しswf、もう一方が単に a であるためpngですか?

Bitmapクラスを に応答させるにはどうすればよいMouseEventですか?

助けてくれてありがとう!

4

2 に答える 2

7

Adobe® Flash® Platform の ActionScript® 3.0 リファレンスから:

Bitmap クラスは InteractiveObject クラスのサブクラスではないため、マウス イベントを送出できません。ただし、Bitmap オブジェクトを含む表示オブジェクト コンテナの addEventListener() メソッドを使用できます。

于 2013-05-14T14:44:59.773 に答える
3

残念ながら、BitmapクラスはマウスイベントをディスパッチしませんSprite。クラス内にラップする必要があります。

于 2013-05-14T14:41:17.123 に答える