2012-01-17 10 views
0

何らかの理由で1つのインスタンスで2つのフレームを持つムービークリップの2番目のフレームに移動して停止するgoToAndStop(2)を取得できません。AS3 goToAndStop()BUG?

ステージのムービークリップをクラスのコンストラクタ関数に追加しています。その後、私はバックボタン2をクリックするだけで、フレーム1に、その後2フレームとするフレームを変えていますボタン1をクリックするだけで...それらの

なしに動作していない.....

しかし...ムービークリップをコンストラクタ関数のgotoフレーム2に設定した場合、フレーム2で起動します。フレーム1のbutton1をクリックすると(フレーム2に移動していることを示しています)、button2をクリックすると、最初のフレーム。ボタン1をもう一度クリックすると、2番目のフレームに変更されます。

コンストラクタ関数から_movie.gotoAndStop(2)を削除しても、再び動作しません。

public function changeBackground($frame:int):void 
{ 
    trace('gotoFrame', $frame); 
    _movie.gotoAndStop($frame); 
    trace('currentFrame',_movie.currentFrame); 
} 

出力に

gotoFrame 1 
currentFrame 1 

をクリックしButton2の出力に

gotoFrame 2 
currentFrame 2 

をクリックButton1のだから、それが正しいフレーム上にあると言うが、それ以外は表示しています!このクラスのインスタンスが1つだけのステージ

+0

コードは機能するはずです。他の何かが間違っている必要があります。 – weltraumpirat

答えて

-2

を、私は通常、関数に渡されるVARSため$接頭辞を使用する傾向があり、ため_は、関数やクラスにプライベートvarsはなし私のコードを共有していないので、それは問題ではありません。それは、私がFlashDevelop ..と慣れ親しんで使っていたflexの特定のバージョンの問題であることが判明しました。そしてすばやく更新され、それは実際にはgotoAndStopかどうかにかかわらず、 ....

0

最初に間違いなく存在し

、あなたの変数に$を削除してください。読みやすくするために必要なものではありません。

第2に、gotoAndStopにバグがあると仮定しないでください。可能であれば、この方法を問題なく使用するFlashゲームは数千、おそらく何百万もあります。私はこれを叱って言うわけではありませんが、多くのプログラマが幽霊を追いかけているので、これを覚えておいてください...バグを言語の問題と考えています。

コンストラクタがフレームを変更すると言っているので、あなたの_movieはボタンと同じではないと思います。 _movieの位置を変更して、正しいオブジェクトと対話しているかどうかを確認してください。

また、この問題はステージが十分に速く無効にされていない可能性があるため、

AS3 - gotoAndStop with immediate action

+0

'-1'関連性のない最初の2つの段落について。最初の文章では、 '$'の使用には不利益はなく、OPの独自のスタイルであり、完璧です(プロジェクトがFlash Gamesなどの基礎としてリリースされない限り、誰もが髪を出す)。 – Marty

+0

@マーティー、私は同意しない。書式設定は、分析される式の言語であるため、非常に重要です。コードはここで共有されているため、公開されています。どの分野においても、自分の問題を相手に正しく伝えることが重要です。 –

+0

私は通常、関数に渡される変数には '$'プレフィックスを使用し、関数やクラスには専用の変数には '_'を使用し、パブリック変数にはプレフィックスを付けないようにする傾向があります。 。それは、FlashDevelop ..と迅速に更新し、それがすべてうまくいけば、それは実際にgotoAndStopフレームであろうとなかろうと、違うオブジェクトに当たって見逃していた..... – rorypicko

1

最初の[OK]を少し暴言...

私もAS3にgotoAndStopでいくつか真剣にイライラの問題を発見しました。ステージ上にそのムービークリップのインスタンスが2つ以上ある場合、ムービークリップの正しいフレームをレンダリングする際に問題があるようです。そのフレーム上のオブジェクトを参照するためのコードが時間内にレンダリングされないことがありますが、フラッシュが次のフレームをレンダリングした後、すべてのクリップがフレーム上のものを表示しているはずです。タイムラインのムービークリップであるフラッシュの基本的なコンセプトの1つがas3で100%動かないように思えるのは難しいです。

今、私はこのラウンドを取得するために管理している

唯一の方法は、ステージ上で非表示にしたり、単にからのコードで作成されたいずれか(、ソースイメージムービークリップのクラスを使用することです...便利な答えを願っていますとしょうかん)。次に、1つのムービークリップでのみgotoAndStopを使用し、必要な回数だけBitmapDataクラスを使用して描画し、必要な表示オブジェクトにこれらのイメージを追加できます。