0

私はフラッシュが初めてです-一種の。少し前に Flash を始めましたが、2 年ほど触れていません。とはいえ、AS2.0に慣れていて、2.0でゲームを作り始めました。ユーザーが典型的な色のグラデーションからキャラクターの肌と髪の色を選択できる画面を実装しようとしています。クリックしたものに基づいて肌の色が実際に色を変えるように設定しました。

しかし、このままではありません。この画面にアクセスするには、キャラクターのインスタンスを含むメイン メニューがあります。キャラクター内では、各手足が独自のムービークリップに分割されています。そして、それぞれの手足は、シェーディング、アウトライン、および皮膚だけのムービークリップで構成されています。色の変更画面では、各手足を切り離し、インスタンス名を付けています。次に、それぞれの手足のスキン部分にインスタンス名を付けました。次に、スキンの色を変更しますが、メイン メニューに戻ると、スキンは元の色に戻っています。ボタンを使用してキャラクターの外観画面に戻ると、スキンはユーザーが選択した色ではなく、元の色に戻ります。色の選択が固執するように、これをどのように実装できると思いますか?

これが私の現在のコードです:

import flash.display.BitmapData;
        function changeColor(clip, theColor) {
            var myColor = new Color(clip);
            myColor.setRGB(theColor);
        }
        mc_colorPicker._visible = true;
        mc_colorPicker.colors.onPress = function() {
    srcMC = mc_colorPicker.colors;
    var colorBitmap:BitmapData = new BitmapData(srcMC._width, srcMC._height, true, 
        0x00000000);
    colorBitmap.draw(srcMC);
    colorValue = "0x"+colorBitmap.getPixel(srcMC._xmouse, srcMC._ymouse).toString(16);
    changeColor(RULeg.skin, colorValue);
        }

ありがとう!

4

1 に答える 1

0

あなたが書いたものを読んで、メインメニューとキャラクターの登場画面で MovieClips の異なるインスタンスを使用していると思います。

その場合、2 つの画面を切り替えるたびに、キャラクターに加えたすべての変更が元に戻されます。Flash では、MovieClip がインスタンス化されるか、新しいキーフレームから読み取られるたびに、新しい MovieClip が使用されたようになります。 . したがって、内部で行われたすべての変更 (色、内側のムービークリップの位置など) は、元の状態 (Flash pro ライブラリ アイテムの最初のフレームの状態) に戻されます。

したがって、変更を永続的にするには、swf のどこからでもアクセスできる場所に colorValue 変数を (変更されるたびに) 保存する必要があります (クラスの静的変数のようなものか、それが本当に醜い場合でも、グローバル / _root 変数でさえ)。 ^^)、別の画面に切り替えるたびにその色をキャラクターに再適用します。

于 2012-05-28T15:45:40.220 に答える