如何在不同角度停止旋转动画片段与动作脚本3之后的其他动画片段

时间:2012-05-31 11:26:20

标签: actionscript rotation

我有一个压力计,需要从最小值旋转到最大值。现在我将压力表作为图片,将箭头作为动画片段。我让它以正确的速度旋转,但不知道如何在最低/最高压力下停止它。

假设这样工作:

我有两个movieclip /按钮;一个用于模拟更多压力,一个用于模拟更少压力。 当用户按下“更多压力”动画片段/按钮时,压力开始上升,压力计内的箭头开始转动。 在压力上升的同时,另一个电影剪辑(“邮票”)将向前推进。

然后是另一个动画片段/按钮,“压力较小”模拟压力下降;当按下时,与压力升高时箭头停在同一点,将开始向最小下沉,并且压模将再次下降。

因此,当用户按下“更多压力”时,压力上升到最大值,并且一旦用户停止按下按钮,动画就会停止(图章和箭头)。如果用户按下“较低压力”,则箭头开始从停止的位置下沉。

到目前为止,我的代码是: pil1 = manometerarrow,邮票= 邮票,“压力更小”/“更多压力”= Lpress / 压缩

addEventListener (Event.ENTER_FRAME, rotate);
function rotate(event:Event):void
{
  pil1.rotation = pil1.rotation+1;
}

2 个答案:

答案 0 :(得分:1)

ymutlu走在正确的轨道上。鼠标按下事件仅在按下鼠标时执行一次。要在按下鼠标时使对象连续旋转,您需要增加或减少每个帧上对象的旋转。我认为以下应该可以解决问题:

import flash.events.MouseEvent;
import flash.events.Event;

var rotate = 0;

Hpress.addEventListener(MouseEvent.MOUSE_DOWN, Hpressed); 
Hpress.addEventListener(MouseEvent.MOUSE_UP, removeEnterFrame);
Lpress.addEventListener(MouseEvent.MOUSE_DOWN, Lpressed);
Lpress.addEventListener(MouseEvent.MOUSE_UP, removeEnterFrame);

function Hpressed(e:MouseEvent):void 
{ 
    rotate = 1; 
    addEnterFrame();
} 

function Lpressed(e:MouseEvent):void 
{ 
    rotate = -1;
    addEnterFrame();
}

function addEnterFrame():void
{
    this.addEventListener(Event.ENTER_FRAME, update);
}

function removeEnterFrame(e:MouseEvent):void
{
    this.removeEventListener(Event.ENTER_FRAME, update);
}

function update(e:Event):void
{
    pil1.rotation += rotate;
} 

答案 1 :(得分:0)

保持可变状态,指出最大按钮按下或最小按钮按下,并在enterframe循环中检查它。编辑了你的评论的答案,希望你能解决它。

addEventListener (Event.ENTER_FRAME, rotate);
function rotate(event:Event):void
{
   if(isMaxDown) // true when max button down
     pil1.rotation = Math.min(presMax,pil1.rotation+1);  // presMax is max value that pressure can go
   if(isMinDown) // true when min button down
     pil1.rotation = Math.max(presMin,pil1.rotation-1);// presMin is min value that pressure can go
}

// isMaxDown and isMinDown are global values.
Hpress.addEventListener(MouseEvent.MOUSE_DOWN, Hpressed);
Lpress.addEventListener(MouseEvent.MOUSE_DOWN, Lpressed); 
Hpress.addEventListener(MouseEvent.MOUSE_UP, H_up);
Lpress.addEventListener(MouseEvent.MOUSE_UP, L_up); 
function H_up(e:MouseEvent):void {
 isMaxDown=false;
} 
function L_up(e:MouseEvent):void {
 isMinDown=false; 
} 
function Hpressed(e:MouseEvent):void {
 isMaxDown=true;
} 
function Lpressed(e:MouseEvent):void {
 isMinDown=true; 
} 

这段代码可以帮到你,但是这不是一条可以做这样的事情的途径。