1

こんにちは、最初のタイマーです。

トゥイーンライト ライブラリを使用してフラッシュ アニメーションを作成しています。それは非常に単純なので、これは非常に悪化しています。これは基本的に、クロスフェードする 5 つのフレームを含むスライドショーです。次のフレームを呼び出すボタンがフェードアウトしたら、それに対するアクションを無効にしたいと思います。現在はフェードアウトしていますが、ロールオーバーするとボタンカーソルが表示され、オーバーステートにより不透明度が元に戻ります。

私は本当にフラッシュの初心者なので、これは非常に簡単だと確信しています。

ありがとう、ライアン

4

3 に答える 3

1

newいずれにせよ、オブジェクトを作成するオペレーターがいる場合でも、AS でオブジェクトを削除するための直接的な方法はありません。そのオブジェクトの強い参照がない場合、すべてのオブジェクトはガベージ コレクションされます。できることは次の 2 つです。

  • ボタンオブジェクトなどにイベントハンドラーを追加するときは、それらを弱いものとしてマークするか、完了したらイベントハンドラーをNULLに設定します

  • AS には明示的な削除はありませんが、var = null構文を使用してオブジェクトを null に設定し、ガベージ コレクターがクリーンアップのために読み取り済みとしてマークできるようにすることができます。

于 2009-03-17T18:27:42.477 に答える
0

実際に AS2 (?) を使用している場合は (私が覚えている限りでは) MovieClip、 の代わりにインスタンスを使用する必要がありますButton。ボタンは常にハンド カーソルを維持しますが、ムービークリップは、マウス ハンドラーが接続されているかどうかに応じて動作を切り替えることができます。

マウス操作を無効にしたいときはいつでも、以前に定義したハンドラーを削除する必要があります (例: myButton.onRelease = null; myButton.onMouseOver = null; ...)。

実際に AS3 を使用している場合は、まず関連するすべてのイベント リスナーを削除する必要があります (例: myButton.removeEventListener(MouseEvent.CLICK, clickHandler);)

次にbuttonMode、「クリック機能」が削除されたにもかかわらず、ハンド カーソルが表示されないようにするためだけに false に設定します ( myButton.buttonMode = false;)。

それが理にかなっていることを願っています。

于 2009-03-24T01:13:45.430 に答える
0

私が目にするほとんどのスライド ショーは再開可能であるか、自動的にループします。あなたが望んでいるのは機能を削除することではなく、特定の時間だけコントロールを削除することだと思います。MOUSE_DOWN または CLICK を使用すると、ボタンを簡単に無効にすることができます。

var slidesContainer:Sprite = new Sprite();

var slideButton:Sprite = new Sprite();
slideButton.graphics.beginFill(0x000000);
slideButton.drawRect(0,0,100,30);
slideButton.endFill();
addChild(slidebutton);

slideButton.addEventListener(MouseEvent.MOUSE_DOWN, onButtonDown);

var slide01:MovieClip = new Slide();
slidesContainer.addChild(slide01);
var slide02:MovieClip = new Slide();
slidesContainer.addChild(slide02);

//Store references to the newly created movieclips in an array.
var arrayOfSlides:Array = [slide01, slide02];
var currentSlide:int = 0;

function onBtnDown(e:MouseEvent):void
{
     TweenLite.to(arrayOfSlides[currentSlide], 1, {alpha: 0});
     e.target.mouseEnabled = false;  //The button that was pressed down is the target

     currentSlide++;
}

この方法では、オブジェクトを非表示にし、マウス機能を無効にするだけです。

不要なときにガベージ コレクション用のオブジェクトを準備しておくのは良い考えですが、自分の作業で何をしたいのかを知ることは重要です。オブジェクトを二度と使用しない場合は、null に設定して参照を削除します。Flash Player 10 にエクスポートする場合、項目を完全に削除して GC の準備をするのに非常に役立つ unloadAndStop メソッドがあります。

一定時間後にスライドショーを再起動するなど、再利用を計画している場合は、ボタンの可視性と mouseEnabled プロパティを true に戻すだけです。

于 2009-03-30T23:29:55.623 に答える