1

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

它应该像这样工作:

我有两个电影剪辑/按钮;一种用于模拟更大的压力,一种用于模拟较小的压力。当用户按下“更多压力”电影剪辑/按钮时,压力开始上升,压力计内的箭头开始转动。在压力上升的同时,另一个movieclip(“stamp”)将向上推动。

然后是另一个电影剪辑/按钮,“压力较小”模拟压力下降;按下时,与压力上升时箭头停止的点相同,将开始向最小值下沉,印章将再次下降。

因此,当用户按下“更多压力”时,压力会上升到最大值,并且一旦用户停止按下按钮,动画就会停止(戳记和箭头)。如果用户按下“降低压力”,箭头就会从它停止的地方开始下沉。

到目前为止,这是我的代码:pil1 = manometerarrow,stamp = stamp和“less pressure”/“more pressure” = Lpress / mpress

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

2 回答 2

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;
} 
于 2012-05-31T13:11:07.300 回答
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; 
} 

这段代码会对您有所帮助,但可能这不是休闲做类似事情的途径。

于 2012-05-31T11:40:22.697 回答