0

AS 3.0 と Flash CS4 を使用して作成した Flash Web サイト テンプレート (4 ページ) があります。これは、ムービー クリップを含む割り当て用です。現在、メイン タイム ラインにはフレームが 1 つしかなく、アクション/メニュー/コンテンツの 3 つのレイヤーがあります。

メイン タイム ラインのアクション スクリプトは次のとおりです。

content_mc.stop ();

各ページのコンテンツを含む「コンテンツ」と呼ばれるステージ上のムービー クリップがあります。

その中には、すべてのナビゲーション ボタンを含み、制御する「メニュー」ムービー クリップがあります。メニュー ムービー クリップのアクション スクリプトは次のとおりです。

function homeBtnPress (event:MouseEvent):void{
//comments here
//comments here
MovieClip(parent).content_mc.gotoAndStop("home");
}


function aboutBtnPress (event:MouseEvent): void{
MovieClip(parent).content_mc.gotoAndStop ("about");
}

function servicesBtnPress (event:MouseEvent): void{
MovieClip (parent).content_mc.gotoAndStop ("services");


}

function contactBtnPress (event:MouseEvent): void{
MovieClip (parent).content_mc.gotoAndStop ("contact");
}

function portfolioBtnPress (event:MouseEvent): void{
MovieClip (parent).content_mc.gotoAndStop ("portfolio");

}

home.addEventListener(MouseEvent.CLICK, homeBtnPress);
about.addEventListener(MouseEvent.CLICK, aboutBtnPress);
services.addEventListener(MouseEvent.CLICK, servicesBtnPress);
contact.addEventListener(MouseEvent.CLICK, contactBtnPress);
portfolio.addEventListener(MouseEvent.CLICK, portfolioBtnPress);

したがって、すべて正常に動作しますが、インストラクターは、ターゲット パス ツールを使用してメイン タイム ラインからメニュー/コンテンツを制御するように求めています。「メニュー」と「コンテンツ」のムービー クリップだけで、正確には何をターゲットにすればよいでしょうか。また、どのコードを使用すればよいでしょうか。うまく説明できていなくてすみません、かなり混乱しています。

講師からのフィードバックは次のとおりです。

「ムービー クリップ内からメイン タイムラインと別のムービー クリップのタイムラインを制御する方法を学びましたが、これは最も直感的なスクリプト作成方法ではなく、デバッグが困難になります。そのため、メニュー ムービー クリップ内のボタンとメイン タイムラインのコンテンツ ムービー クリップ内のフレームをターゲットにする方法を検討する必要があります。「</p>

よろしくお願いします!

4

2 に答える 2

1

これは非常に基本的な作業ですが、便利な作業です。

アイデアを得るには、こちらこちらをご覧ください。2 番目のチュートリアルでは actionscript 2 を使用しますが、考え方は同じです。テストを行い、メイン タイムラインに移動して ActionsPanel に移動し、挿入ターゲット パスを選択して、メニュー クリップを選択します。conent_mc 内から同じことを行い、パスがどのように異なるかを確認します。クリップにアクセスする方法を考えてみてください (ファイル システム上のフォルダーによく似ています)。

あなたの家庭教師は正しいです:

  1. コードがいたるところにあり (多くのムービー クリップで)、約 1 か月後にこのプロジェクトを再検討する必要がある場合、メニュー/コンテンツのすべての複雑な動きのすべてのコードがどこにあるのか忘れてしまい、時間とエネルギーを浪費します。
  2. コードのコピー/貼り付けは作業を進めるのに適していますが、コードが機能し、その方法を理解したらすぐに、コードの大部分を変更することなく簡単に変更できる方法でコードを記述してみてください。

メイン タイムラインに記述されたそのコードは、おそらく次のようになります。

//setup menu click handlers

content_mc.home.addEventListener(MouseEvent.CLICK, menuPress);
content_mc.about.addEventListener(MouseEvent.CLICK, menuPress);
content_mc.services.addEventListener(MouseEvent.CLICK, menuPress);
content_mc.contact.addEventListener(MouseEvent.CLICK, menuPress);
content_mc.portfolio.addEventListener(MouseEvent.CLICK, menuPress);
//take advantage of the fact that your button name is the same as the frame label in content_mc
function menuPress(event:MouseEvent):void{
   content_mc.gotoAndStop(event.currentTarget.name);
}

私は currentTarget を使用しました。これは、mouseChildren が true/false であり、イベントのバブリングに応じて、一部の子ではなく、クリックされたオブジェクトを返すためです。

于 2009-09-06T09:33:09.103 に答える
0
var btnArray:Array = [content_mc.home,content_mc.about,content_mc.service,content_mc.contact,content_mc.portfolio];
for(var i:uint=0;i<btnArray.length;i++)
{
    btnArray[i].addEventListener(MouseEvent.CLICK, action);
}
function action(e:MouseEvent):void 
{
    content_mc.gotoAndStop(event.currentTarget.name);
}

コードを単純化しただけです。

于 2011-08-22T07:32:42.663 に答える