0

現在、ステージ上にさまざまな操作を行う複数のムービー クリップとボタンがあります。敵プレイヤーを「攻撃」してHPを減らすボタンが1つあります。このボタンにはクリック用のイベント リスナーがあり、それがアクティブ化されると IF ステートメントを通過し、ヘルスの低下に基づいてヘルス バーなどを変更します。ヘルスが0になったら画面全体を別のエンディング画面に遷移させたい。

.visible を使用して他のすべてのオブジェクトを非表示にしようとしましたが、それは機能しましたが、クリックして攻撃するインスタンス ボタンを非表示に設定しても機能しません。また、ボタンを削除しないremoveChildも試しました.gotoAndPlay/Stopを将来のフレームにすると、nullオブジェクト参照が得られます。

そのフレームの特定のボタンのコードは次のとおりです。

stop();

OSButton.addEventListener(MouseEvent.CLICK, OSAttack);

function OSAttack(event:MouseEvent):void
{
    var health1:int = parseInt(RegHealth.text);
    health1 = health1 - 1000;


        if(health1 == 9000 || health1 == 8000 || health1 == 7000 || health1 == 6000 || health1 == 5000
       || health1 == 4000 || health1 == 3000 || health1 == 2000 || health1 == 1000 || health1 ==0){
        REGHPBAR.play();
    }


    RegHealth.text = health1.toString();


    if(health1 <= 0){
        ////// WHAT CODE DO I PUT HERE? 
    }


}
4

1 に答える 1

0

変数名と関数名の先頭に小文字を使用し、クラス名の先頭に大文字を使用する書式を使用してみてください。これは一般的な方法であり、コードを読みやすくします。

ボタンを削除するときは、リスナーも削除する必要があります。(これを使い始めるかもしれないので、弱い参照について調べて読んでください)。

したがって、AS3 は次のようになります。

oSButton.addEventListener(MouseEvent.CLICK, oSAttack);

//or using weak referencing
//oSButton.addEventListener(MouseEvent.CLICK, oSAttack, false 0, true);

function oSAttack(event:MouseEvent):void
{
var health1:int = parseInt(regHealth.text);
health1 = health1 - 1000;

if(health1 == 9000 || health1 == 8000 || health1 == 7000 || health1 == 6000 || health1 == 5000 || health1 == 4000 || health1 == 3000 || health1 == 2000 || health1 == 1000 || health1 ==0){
REGHPBAR.play();
}


regHealth.text = health1.toString();

if(health1 <= 0){
////// remove the button
oSButton.removeEventListener(MouseEvent.CLICK, oSAttack);
oSButton.parent.removeChild(oSButton);

//if you no longer need the button you can null it
oSButton = null;
}

}
于 2012-11-28T07:46:05.900 に答える