AS3 如何在不点击时使对象收缩

AS3 How to make an object shrink when it is not tapped

我偶然发现了一个我似乎不知道如何解决的问题。我已经在网上搜索过,但没有找到答案。就是当你点击屏幕上的怪物时它会变大,但是当你不点击它时 returns 到它的默认大小。我已经设法让它在轻敲时变大,但我似乎做不到,所以当你松开水龙头时它会收缩。我正在谈论的一个例子是 cookie clicker,当你点击大 cookie 时它会变大,但当你不点击它时它会恢复到原来的大小。到目前为止,这是我的代码:

var score:Number = 0;
var score_str:String;
var score_str_len:int;

Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;

Monster.addEventListener(TouchEvent.TOUCH_TAP, fl_TapHandler);

Monster.width = 363.5;
Monster.height = 344.9;

function fl_TapHandler(event:TouchEvent):void
{
    Monster.width = 378.4;
    Monster.height = 359;

    score = score + 1;

    score_str = score.toString();
    score_str_len = score_str.length;

    Taps_txt.text = 
        score_str_len > 3 

        ? score_str.substr(0, score_str_len-3) + ',' + score_str.substr(score_str_len-3) 
        : score_str
    ;

}

将不胜感激。

如何将所有怪物存储在一个数组中?

var monsters:Vector.<Monster> = new Vector.<Monster>();
monsters.push(new Monster());
monsters.push(new Monster());
monsters.push(new Monster());

for(var monster : monsters) {
    if(monster.isTapped){
        monster.grow()
    } else {
        monster.shrink()
    }
}

根据actionscript reference,还有很多其他触摸事件可以使用,例如TouchEvent.TOUCH_OUT或TouchEvent.TOUCH_END。

我没有使用过它们,所以我不能告诉你哪个对你有帮助,但你可以 运行 进行一些测试,看看当你将手指从怪物,就像你处理鼠标事件一样。

所以基本上你会为发布 touchevent 添加另一个侦听器(最好在 fl_TapHandler 函数内)并将怪物变量恢复到正常水平。

如果你想拥有多个怪物,最好的办法是为它创建一个class并调用这个class中的函数。示例:

Monster.addEventListener(TouchEvent.TOUCH_TAP, Monster.fl_TapHandler);

希望对您有所帮助。