Opo*_*poe 0 performance timer actionscript-3 mousedown
这就是我想要完成的事情;
随着对影片剪辑(cannon_mc)点击的射门被解雇(ball_mc)
较长的鼠标下降,球的射击速度应该增加.我的问题是;
实现这一目标的最有效方法是什么?用计时器或类似的东西;
var isMouseDown:Boolean = false;
var speed= 10;
myCannon.addEventListener(MouseEvent.MOUSE_DOWN,buttonPressed);
function buttonPressed(event:MouseEvent){
//trace("down");
isMouseDown == true;
if(isMouseDown == false)
{
speed == +1
}
}
Run Code Online (Sandbox Code Playgroud)
MOUSE_DOWN事件仅触发一次.要获得您想要的效果,您需要MOUSE_DOWN和MOUSE_UP事件处理程序的组合.
您可以在MOUSE_DOWN事件中将变量设置为true以及当前时间戳 flash.utils.getTimer()
然后在MOUSE_UP上,如果您在MOUSE_DOWN中设置的变量为true,则计算经过的时间并相应地设置功率.
例:
var isMouseDown:Boolean = false;
var mouseDownBegin:int;
var speed = 10;
var speed_inc = 2; // give it in per second
var speed_max = 100; // max speed possible
// add event handlers
myCannon.addEventListener(MouseEvent.MOUSE_DOWN, buttonPressed);
myCannon.addEventListener(MouseEvent.MOUSE_UP, buttonReleased);
function buttonPressed(event:MouseEvent){
isMouseDown = true;
mouseDownBegin = flash.utils.getTimer();
}
function buttonReleased(event:MouseEvent){
if(isMouseDown == true){
// get time between press and release
var timeElapsed = flash.utils.getTimer() - mouseDownBegin;
// reset isMouseDown
isMouseDown = false;
// compute speed
speed += int(Math.floor(speed_inc * (timeElapsed / 1000.0)));
speed = Math.min(speed, speed_max);
// code to fire ball with new speed
// .......
}
}
Run Code Online (Sandbox Code Playgroud)
您还可以添加ENTER_FRAME事件并为功率计或其他内容设置动画以获得视觉效果
更新
正如The_asMan指出的那样,MOUSE_UP如果在舞台外拖动并释放鼠标,则不会触发事件.为了处理这种情况MOUSE_LEAVE,使用回调作为事件的add和事件监听器作为buttonReleased函数的副本,但它接受一个Event对象:
function buttonReleasedOutsideStage(event:Event){
if(isMouseDown == true){
// get time between press and release
var timeElapsed = flash.utils.getTimer() - mouseDownBegin;
// reset isMouseDown
isMouseDown = false;
// compute speed
speed += int(Math.floor(speed_inc * (timeElapsed / 1000.0)));
speed = Math.min(speed, speed_max);
// code to fire ball with new speed
// .......
}
}
stage.addEventListener(Event.MOUSE_LEAVE, buttonReleasedOutsideStage);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5048 次 |
| 最近记录: |