0

非常に単純なものが欠けていることは知っていますが、それを理解できないようです。そのため、次のようにステージ上のログを制御するボタンがあります。

//buttons for main screen left and right
        mainScreen.leftBtn.addEventListener(MouseEvent.CLICK, leftButtonClicked);
        mainScreen.rightBtn.addEventListener(MouseEvent.CLICK, rightButtonClicked);

private function leftButtonClicked(e:MouseEvent):void 
    {
        if (e.type == MouseEvent.CLICK)
        {
            clickLeft = true;
            trace("LEFT_TRUE");
        }
    }

    private function rightButtonClicked(e:MouseEvent):void 
    {
        if (e.type == MouseEvent.CLICK)
        {
            clickRight = true;
            trace("RIGHT_TRUE");
        }
    }

logControls();これらは、次のように呼び出される ENTER_FRAME イベントリスナー関数で設定したログのローテーションを制御します。

    private function logControls():void 
    {


        if (clickRight)
        {

            log.rotation += 20;

        }else
        if (clickLeft)
        {
            log.rotation -= 20;

        }
    }

私がやりたいことは、ユーザーが左または右に押すと、ログが各フレームを左または右に回転させることです。しかし、何が起こっているのかというと、一方向にしか回転せず、他のマウス イベントには応答しません。私は何が間違っているのでしょうか?

4

1 に答える 1

1

おそらく、回転を設定するときに反対の var を false に設定する必要があるだけです。したがって、左に回転している場合は、clickRight 変数を false に設定します。

mainScreen.leftBtn.addEventListener(MouseEvent.CLICK, rotationBtnClicked);
mainScreen.rightBtn.addEventListener(MouseEvent.CLICK, rotationBtnClicked);

private function rotationBtnClicked(e:MouseEvent):void {
    clickLeft = e.currentTarget == mainScreen.leftBtn; //if it was left button clicked, this will true, otherwise false
    clickRight = e.currentTarge == mainScreen.rightBtn; //if it wasn't right button, this will now be false
}

private function logControls():void {
    if (clickRight){
        log.rotation += 20;
    }

    if (clickLeft){
        log.rotation -= 20;
    }
}
于 2015-04-23T00:48:05.773 に答える