AS3複数のフレームにわたってColor Transform?
-
25-10-2019 - |
質問
(フラッシュプロフェッショナル、AS3)
私は、さまざまな祭りや色を選択できるカスタムアバターシステムに取り組んでいます。たとえば、10個のヘアスタイルを備えた「ヘア」モービックリップがあります。各フレームには、異なるヘアスタイル(髪型、髪型など)のモービックリップがあります。また、色を変えるカラーピッカーもあります。
これが私のコードです:
var hairColor:ColorTransform;
hairColor = mc_myAvatar.hair.colorLayer.transform.colorTransform;
hairColor.color = 0xCCCC00;
mc_myAvatar.hair.colorLayer.transform.colorTransform = hairColor;
これにより、初期色が正しく変わります。 MC_MYAVATAR.HAIRを次のフレームに進めるための「NexThair」ボタンがあります。ボタンをクリックすると、nullオブジェクトの参照があるというエラーメッセージが表示されます。トレースを追加しましたが、Mc_myavatar.hair.colorlayerはフレーム2にnullです。なぜ?私は明らかに、hairstyle2をフレーム2の「colorlayer」と名付けました。
この問題は、さまざまなクラス/Movieclipsで同じ名前を使用していることに関連していると思いますが、問題を修正する方法がわかりません...
正方形のMovieclipsの下に正方形のMovieclipを追加し、正方形の「ColorLevel」と名付け、髪型クリップから名前を削除しました。次のボタンをクリックすると、正方形はフレームからフレームまで色を正しく維持します。しかし、正方形を持つことは私にはあまりうまくいきません。 :(
ヘアスタイルのレイヤーをマスクに変換しようとしました。ただし、これを行うと、さらに別の「nullオブジェクト」エラーが発生します-mc_myavatar.hair.colorlayerはフレーム1の後にヌルです。一緒に動作するMovieclip。運はありません。同じエラー!
何が起きてる? Movieclipで明確に定義されているのに、なぜこれらのnullオブジェクトを取得するのですか?
また、複数のフレームと色を実行するためのより良い方法についての提案を受け入れています。
解決
function miClick(e:MouseEvent) {
content.gotoAndStop(e.currentTarget.parent.name);
if(e.currentTarget.parent.name == "2") {
content.addEventListener(Event.EXIT_FRAME, this.hdExitFrame);
productMenu.alpha = 1;
trace(content.products);
} else {
productMenu.alpha = 0;
}
}
function hdExitFrame(e:Event) {
trace(e.target.currentFrame + ", " + e.target.products);
content.removeEventListener(Event.EXIT_FRAME, this.hdExitFrame);
}
私はこれをテストしました、content.productsはmiclickでnullですが、hdexitframeではそうではありませんでした。お役に立てれば。