1

私は圧力計を持っています。これは最小値から最大値まで回転する必要があります。現在、圧力計を写真として、矢印をムービークリップとして持っています。適切な速度で回転していますが、最低/最高圧力で停止する方法がわかりません。

次のように動作するとします。

2 つのムービークリップ/ボタンがあります。1 つはより多くの圧力をシミュレートするためのもので、もう 1 つはより少ない圧力をシミュレートするためのものです。ユーザーが「more pressure」ムービークリップ/ボタンを押すと、圧力が上昇し始め、圧力計内の矢印が回転し始めます。圧力が上昇すると同時に、別のムービークリップ (「スタンプ」) が押し上げられます。

次に、別のムービークリップ/ボタン、「少ない圧力」は圧力低下をシミュレートします。押すと、圧力が上昇したときに矢印が止まったのと同じポイントが最小に向かって沈み始め、スタンプが再び下がります。

そのため、ユーザーが「より多くの圧力」を押すと、圧力が最大に向かって上昇し、ユーザーがボタンを押すのをやめるとすぐに、アニメーションが停止します (スタンプと矢印の両方)。そして、ユーザーが「圧力を下げる」を押すと、矢は止まったところから沈み始めます。

これまでの私のコードはとおりです

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

2 に答える 2

1

ymutlu は正しい軌道に乗っています。マウス ダウン イベントは、マウスが押されたときに 1 回だけ実行されます。マウスが押されている間にオブジェクトを連続的に回転させるには、各フレームでオブジェクトの回転を増減する必要があります。私は次のようにするべきだと思います:

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 に答える