0

私は AS3/Flash と stackoverflow を初めて使用し、この問題について別のスレッドをブラウズしようとしました。

私の問題は、ボタンの 1 つでロールオーバーが速すぎると、ボタンが「クリック」状態にロールオーバーすることです。「ヒット!」という行をデバッグするテスターがあり、その不具合が発生するたびに、テスターは「ヒット」という行を表示しないため、実際にはユーザー入力のクリックを登録していないことがわかります。

興味深いことに、ボタンの下または上から反対側に垂直に移動したときにのみ問題が発生します。より速い FPS は効果を最小限に抑えるように見えますが、それでも効果はあります。ヒットエリアレイヤーを取り除こうとしましたが、それが問題の原因であると考えていましたが、それでも何もしませんでした.

誰かがこれを理解できる場合に備えて、.fla を投稿します。

https://dl.dropboxusercontent.com/u/18672917/Main_Btn_7halp6.fla

可能性のあるコーディング エラーだけから判断したい場合に備えて、私が使用したコードを次に示します。(また、better_mc.Hit._visible = false; 動作しないようです)

import flash.events.MouseEvent;

stop();

better_mc.addEventListener(MouseEvent.ROLL_OVER, betterOver);
better_mc.addEventListener(MouseEvent.ROLL_OUT, betterOut);
better_mc.addEventListener(MouseEvent.CLICK, betterClick);

function betterOver(evt:MouseEvent):void{
    better_mc.gotoAndPlay("Over");
    }

function betterOut(evt:MouseEvent):void{
    better_mc.gotoAndPlay(27- (better_mc.currentFrame-10));
    }   

function betterClick(event:MouseEvent):void {
better_mc.gotoAndPlay("Click");
}



better_mc.hitArea = better_mc.Hit;
better_mc.addEventListener(MouseEvent.MOUSE_DOWN, Hitbox);
function Hitbox (event:MouseEvent){
trace("hit! "+this.name);

better_mc.Hit._visible = false;
};
4

2 に答える 2

0

はい、わかった。これが起こっていることです

ロールアウトに関するあなたの計算は問題を引き起こしています

function betterOut(evt:MouseEvent):void{
    **better_mc.gotoAndPlay(27- (better_mc.currentFrame-10));**
    } 

このエクスプレッションは、フレーム 27 にある「stop()」よりも前のフレーム番号 28 を返すことがあるため、クリック アニメーション全体を再生し続けます。

27- (better_mc.currentFrame-10)

クリック アニメーションが開始する前、つまりこの場合はフレーム 31 の前に「stop()」を追加するという簡単な解決策を試してください。

これで問題が解決するかどうかを確認してください。

于 2013-05-10T20:28:56.410 に答える
0

私はCS5を持っているのであなたのflaを開くことができないので、それについてはあまり役に立ちません

クリック イベントとマウスダウン イベントの両方が必要な理由がわかりません。アニメーションがここにどのように追加されるかがわからないため、コードは gotoAndPlay(labelname) の部分を除いて問題ないようです。

クエリの最後の部分だけ

(また、better_mc.Hit._visible = false; 動作しないようです)

AS3 の場合、「_visible」ではなく「visible」プロパティが使用されるため、次のようになります。

better_mc.Hit.**visible** = false;
于 2013-05-09T11:24:31.470 に答える