1

アクション スクリプト 3 でボタンのサイズを変更すると、割り当て例のヒット ボックスが四角形ではなくテキストに変わります。

http://www.datafilehost.com/download-5ff20e2c.html

問題を説明するビデオ: http://sdrv.ms/YcnjYV

コードは次のとおりです。

import flash.events.MouseEvent;

trace("Stage(X,Y):" + stage.stageWidth + "X" + stage.stageHeight);

stage.addEventListener(MouseEvent.MOUSE_MOVE, mousePosition);
clickMe.addEventListener(MouseEvent.CLICK, handleClicks); 
function mousePosition(event:MouseEvent) {

    if(clickMe.mouseX >= 0 && clickMe.mouseX <= clickMe.width && clickMe.mouseY >= 0 && clickMe.mouseY <= clickMe.height)
    {
        do
        {
            var newX = Math.floor(Math.random()*stage.stageWidth);
            var newY = Math.floor(Math.random()*stage.stageHeight)

        }while(newX >= stage.stageWidth - clickMe.width || newY >= stage.stageHeight - clickMe.height)

        clickMe.x = newX;
        clickMe.y = newY;

        if(clickMe.width > 50)
        {
            clickMe.width=clickMe.width - 5;
            clickMe.height = clickMe.width - 5;
        }
    }
}

function handleClicks(event:MouseEvent)
{
    trace("Button Clicked!");
}

オブジェクトのサイズを変更するときにヒットボックスを同じままにするにはどうすればよいですか?

4

2 に答える 2

1

これは、あなたがしていることへのより良い、よりクリーンなアプローチのようです (clickMe クリップをランダムな位置に移動し、5px 縮小すると仮定します)。

import flash.events.MouseEvent;

clickMe.addEventListener(MouseEvent.ROLL_OVER, moveSquare);

function moveSquare(e:MouseEvent):void
{
    var newX       = Math.floor(Math.random()*stage.stageWidth);
    var newY       = Math.floor(Math.random()*stage.stageHeight);
    clickMe.x      = newX;
    clickMe.y      = newY;
    clickMe.width  = clickMe.width - 5;
    clickMe.height = clickMe.height - 5;
}
于 2013-01-18T01:21:55.090 に答える
1

ボタン サイズの変更は、その中の mouseX/mouseY 値に影響します。したがって、それに頼らず、ボタンの位置とサイズに基づいてチェックを使用してください。

if(mouseX >= clickMe.x && mouseX <= clickMe.x+clickMe.width && mouseY >= clickMe.y && mouseY <= clickMe.y+clickMe.height)
于 2013-01-18T13:13:34.987 に答える