我有一个压力计,需要从最小值旋转到最大值。现在我将压力表作为图片,将箭头作为动画片段。我让它以正确的速度旋转,但不知道如何在最低/最高压力下停止它。
假设这样工作:
我有两个movieclip /按钮;一个用于模拟更多压力,一个用于模拟更少压力。 当用户按下“更多压力”动画片段/按钮时,压力开始上升,压力计内的箭头开始转动。 在压力上升的同时,另一个电影剪辑(“邮票”)将向前推进。
然后是另一个动画片段/按钮,“压力较小”模拟压力下降;当按下时,与压力升高时箭头停在同一点,将开始向最小下沉,并且压模将再次下降。
因此,当用户按下“更多压力”时,压力上升到最大值,并且一旦用户停止按下按钮,动画就会停止(图章和箭头)。如果用户按下“较低压力”,则箭头开始从停止的位置下沉。
到目前为止,我的代码是: pil1 = manometerarrow,邮票= 邮票,“压力更小”/“更多压力”= Lpress / 压缩addEventListener (Event.ENTER_FRAME, rotate);
function rotate(event:Event):void
{
pil1.rotation = pil1.rotation+1;
}
答案 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;
}
这段代码可以帮到你,但是这不是一条可以做这样的事情的途径。