2

Adobe Flash CS6 の Actionscript 3.0 に関しては初心者です。Web ポートフォリオ用の基本的な単純なアニメーション インタラクティブ ロゴを作成しようとしていますが、ロゴの三角形のロールオーバーの問題を修正しようとしているときに問題が発生しました。独学で学んだ現在のコーディングでは、ボタンの代わりにムービー クリップを使用して、アニメーションと反応を適切に取得できます。ただし、このメソッドを実行すると、ステージ上で最前面にあるムービー クリップの「ヒット ボックス」で、その背後にあるムービー クリップにマウスを合わせようとしても、そのアニメーションが再生されます。

問題の Web ページは次のとおりです。

http://inancarrow.wix.com/home

黄色の三角形の左隅または下隅にカーソルを合わせると、青色の「ゲーム」アニメーションまたは緑色の「スキル」アニメーションがフェードインし、黄色の「接続」アニメーションの代わりに再生されることに注目してください。

私は、ムービー クリップをボタンに変えて、人々が図形の上にマウスを置いたときに正確に応答できるようにすることで、この小さいながらも厄介な問題を解決しようとしました。その結果、アニメーションを含むすべてのムービー クリップが制御不能に再生され、アニメーションがループします。私が行った検索から、ネストされたムービークリップと関係があります...

何が問題なのか、自分で問題を解決する方法を見つけようとしてあまりにも多くの時間を費やしてきました。そのため、重複するロールオーバーの問題を解決する方法、またはmovieClips の制御不能な再生を修正します。

これが私が使用しているコードです:

RedIFader.addEventListener(MouseEvent.ROLL_OVER, RedIOver);
RedIFader.addEventListener(MouseEvent.ROLL_OUT, RedIOut);
//RedIFader.addEventListener(MouseEvent.ROLL_OVER, RedIClick);

function RedIOver(event:MouseEvent):void{
    BioFadeIn.gotoAndPlay("BioFadeInOver")
    BlueAFader.gotoAndPlay("BlueAFaderOver")
    GreenAFader.gotoAndPlay("GreenAFaderOver")
    YellowNFader.gotoAndPlay("YellowNFaderOver")
}

function RedIOut(event:MouseEvent):void{
    BioFadeIn.gotoAndPlay("BioFadeInOut")
    BlueAFader.gotoAndPlay("BlueAFaderOut")
    GreenAFader.gotoAndPlay("GreenAFaderOut")
    YellowNFader.gotoAndPlay("YellowNFaderOut")
}

BlueAFader.addEventListener(MouseEvent.ROLL_OVER, BlueAOver);
BlueAFader.addEventListener(MouseEvent.ROLL_OUT, BlueAOut);
//BlueAFader.addEventListener(MouseEvent.ROLL_OVER, BlueAClick);

function BlueAOver(event:MouseEvent):void{
    GamesFadeIn.gotoAndPlay("GamesFadeInOver")
    RedIFader.gotoAndPlay("RedIFaderOver")
    GreenAFader.gotoAndPlay("GreenAFaderOver")
    YellowNFader.gotoAndPlay("YellowNFaderOver")
}

function BlueAOut(event:MouseEvent):void{
    GamesFadeIn.gotoAndPlay("GamesFadeInOut")
    RedIFader.gotoAndPlay("RedIFaderOut")
    GreenAFader.gotoAndPlay("GreenAFaderOut")
    YellowNFader.gotoAndPlay("YellowNFaderOut")
}

GreenAFader.addEventListener(MouseEvent.ROLL_OVER, GreenAOver);
GreenAFader.addEventListener(MouseEvent.ROLL_OUT, GreenAOut);
//GreenAFader.addEventListener(MouseEvent.ROLL_OVER, GreenAClick);

function GreenAOver(event:MouseEvent):void{
    SkillsFadeIn.gotoAndPlay("SkillsFadeInOver")
    RedIFader.gotoAndPlay("RedIFaderOver")
    BlueAFader.gotoAndPlay("BlueAFaderOver")
    YellowNFader.gotoAndPlay("YellowNFaderOver")
}

function GreenAOut(event:MouseEvent):void{
    SkillsFadeIn.gotoAndPlay("SkillsFadeInOut")
    RedIFader.gotoAndPlay("RedIFaderOut")
    BlueAFader.gotoAndPlay("BlueAFaderOut")
    YellowNFader.gotoAndPlay("YellowNFaderOut")
}

YellowNFader.addEventListener(MouseEvent.ROLL_OVER, YellowNOver);
YellowNFader.addEventListener(MouseEvent.ROLL_OUT, YellowNOut);
//YellowNFader.addEventListener(MouseEvent.ROLL_OVER, YellowNClick);

function YellowNOver(event:MouseEvent):void{
    ConnectFadeIn.gotoAndPlay("ConnectFadeInOver")
    RedIFader.gotoAndPlay("RedIFaderOver")
    BlueAFader.gotoAndPlay("BlueAFaderOver")
    GreenAFader.gotoAndPlay("GreenAFaderOver")
}

function YellowNOut(event:MouseEvent):void{
    ConnectFadeIn.gotoAndPlay("ConnectFadeInOut")
    RedIFader.gotoAndPlay("RedIFaderOut")
    BlueAFader.gotoAndPlay("BlueAFaderOut")
    GreenAFader.gotoAndPlay("GreenAFaderOut")
}

あなたの時間と配慮していただきありがとうございます。

4

2 に答える 2

0

私にとっては、クリップが三角形であるという事実に由来しているようです。おそらく、青、緑、黄色の三角形と赤のi(PNG形式の画像?...)の画像を使用しています。

事実、PNGの透明な領域をロールした場合でも、写真のロールオーバーがディスパッチされる傾向があります。これは明らかにここで発生しています。

これを解決するには、たとえば、この問題を処理することになっているInteractivePNGクラスを使用してみてください。

また、PNGファイルを使用していない場合、解決策は、ムービークリップの空の部分から既存のベクトル塗りつぶし(透明なものも含む)を削除するのと同じくらい簡単です。

于 2012-12-11T16:55:23.823 に答える
0

私はあなたの問題を理解しているかどうかわかりませんが、もしそうなら、これはあなたができる解決策です:

ロール オーバー ハンドラで、他の色mouseEnabledmouseChildrenプロパティをに設定しますfalse

RedIFader.mouseEnabled = false;
RedIFader.mouseChildren = false;

次に、ロールアウト時に、それらをすべて true に戻します。

RedIFader.mouseEnabled = true;
RedIFader.mouseChildren = true;

これにより、マウスが現在の色を離れるまで、他の色によるマウス イベントのトリガーが防止されます。


これが問題でない場合は、ダミー オブジェクトを使用することをお勧めします。

ダミー シェイプ (アルファ 0) を作成し、それをムービー クリップに変換して、マウス オーバーを発生させたい場所に配置します。次に、ロール オーバー/アウト リスナーをダミーに追加します。邪魔にならないように、おそらくすべてのカラー オブジェクトでmouseEnabled&を false に設定する必要があります。mouseChildren

//disable all the color buttons mouse interactions
RedIFader.mouseEnabled = false;
BlueAFader.mouseEnabled = false;
GreenAFader.mouseEnabled = false;
YellowNFader.mouseEnabled = false;
RedIFader.mouseChildren = false;
BlueAFader.mouseChildren = false;
GreenAFader.mouseChildren = false;
YellowNFader.mouseChildren = false;

//add listeners to the dummys
RedDummy.addEventListener(MouseEvent.ROLL_OVER,btnRollOver);
RedDummy.addEventListener(MouseEvent.ROLL_OUT,btnRollOut);
BlueDummy.addEventListener(MouseEvent.ROLL_OVER,btnRollOver);
BlueDummy.addEventListener(MouseEvent.ROLL_OUT,btnRollOut);
GreenDummy.addEventListener(MouseEvent.ROLL_OVER,btnRollOver);
GreenDummy.addEventListener(MouseEvent.ROLL_OUT,btnRollOut);
YellowDummy.addEventListener(MouseEvent.ROLL_OVER,btnRollOver);
YellowDummy.addEventListener(MouseEvent.ROLL_OUT,btnRollOut);

function btnRollOver(e:Event):void {

    if(e.currentTarget != RedDummy){
        RedIFader.gotoAndPlay("RedIFaderOver");
    }else{
        BioFadeIn.gotoAndPlay("BioFadeInOver")
    }
    if(e.currentTarget != BlueDummy){
        BlueAFader.gotoAndPlay("BlueAFaderOver");
    }else{
        GamesFadeIn.gotoAndPlay("GamesFadeInOver");
    }
    if(e.currentTarget != GreenDummy){
        GreenAFader.gotoAndPlay("GreenAFaderOver");
    }else{
        SkillsFadeIn.gotoAndPlay("SkillsFadeInOver");
    }
    if(e.currentTarget != YellowDummy){
        YellowAFader.gotoAndPlay("YellowAFaderOver");
    }else{
        ConnectFadeIn.gotoAndPlay("ConnectFadeInOver");
    }
}

function btnRollOut(e:Event):void {
    if(e.currentTarget != RedDummy){
        RedIFader.gotoAndPlay("RedIFaderOut");
    }else{
        BioFadeIn.gotoAndPlay("BioFadeInOut")
    }
    if(e.currentTarget != BlueDummy){
        BlueAFader.gotoAndPlay("BlueAFaderOut");
    }else{
        GamesFadeIn.gotoAndPlay("GamesFadeInOut");
    }
    if(e.currentTarget != GreenDummy){
        GreenAFader.gotoAndPlay("GreenAFaderOut");
    }else{
        SkillsFadeIn.gotoAndPlay("SkillsFadeInOut");
    }
    if(e.currentTarget != YellowDummy){
        YellowAFader.gotoAndPlay("YellowAFaderOut");
    }else{
        ConnectFadeIn.gotoAndPlay("ConnectFadeInOut");
    }
}
于 2012-12-06T17:48:11.363 に答える