Flashでボタンを作成しましたが、その中にTextFieldとMovieClipがあり、両方ともインスタンス名が設定されています。ボタンの4つのフレームすべてをカバーし、キーフレームはありません。Button内のインスタンス名に問題があります
私は私が設定したいインスタンス名を使用してオブジェクトにアクセスすることができませんでしたので、私は何が起こっているのか確認するために、コードのこの部分を使用:
var obj:DisplayObject = this.m_graphics.btnChange.upState;
for (var i:int = 0; i < obj.numChildren; i++)
{
trace("We have an object at " + i + " - " + obj.getChildAt(i) + ": " + obj.getChildAt(i).name);
var t:TextField = obj.getChildAt(i) as TextField;
if (t == null)
continue;
trace(" The textfield has text '" + t.text + "');
}
私は出力としてこれを取得する:
We have an object at 0 - [object Shape]: instance195
We have an object at 1 - [object TextField]: instance199
The textfield has text 'Change'
We have an object at 2 - [object MovieClip]: instance203
TextFieldとMovieClipがあるので、インスタンス名が汎用のインスタンス###にリセットされました。
誰でも問題が分かっていますか?ボタンをMovieClipにすると、それはうまく動作します(ただし、フレームを自分でコントロールする必要があります)。
私はこの問題を回避するために使用できるさまざまな方法を認識してんだけど、それは多くのことを変更することを意味し、私はのSimpleButtonのフラッシュ
にを設定し、インスタンス名を無視する理由を知りたいのですがEDIT
は少しさらにそれを見ると、私とTextField
を与える例えばupState
を通じてトレース(フラッシュIDEで、ボタンには、キーフレームはありませんにもかかわらず、フラッシュは各項目の4つのインスタンスを作成しているようですインスタンス名「instance2」、downState
のインスタンス名は「instance4」)。ある州のテキストを変更すると、他の州のテキストは反映されません。私はFlashがオブジェクトを作成するときに、それが適切にすべてのプロパティの上にコピーしていないことを考えてい
(つまりインスタンス名)
EDIT
私はシェーンの答えは、回避策であることに同意 - I私は、問題を回避するためのさまざまな方法を知っていると言っていますが、問題を無視して解決しません(私がそれを受け入れなかった唯一の理由です)。私は最初に誰かがおそらく最初に何が起こっているのかを知っているかどうかを知るために来たのです(tbh、SDKのバグのようです)。
「私はSimpleButtonで子供にアクセスすべきではありません;もっとコントロールしたい場合はSpriteやMovieClipを使ってください」という議論の裏付けを理解していますが、私は同意しません。 Flash IDEでは、名前付きインスタンスを含むボタンを作成することができ、SimpleButtonドキュメントはさまざまな状態へのアクセスを提供するため、私にとってはこれが受け入れられる動作です。 SimpleButtonが非常に基本的で変更不可能な静的ボタン(ローカリゼーションも同様です)にしか使用できない場合は、かなり無駄です。スプライトとムービークリップを使用できますが、異なる状態を自分で制御する必要があります。これは面倒です。私はボイラープレートを扱うために私自身のButtonクラスを持っていますが、基本的なSDKの機能を書き換える必要はありません。なぜなら、私にとってはバグです。
私はそれがある時間のために賞金を開いたままにします。もし私が他に何も得なければ、私はそれをシェーンに与えます。
これは絶対に正しいですが、ボタン内のオブジェクトにアクセスすることはできません。 – hardik
@HardikあなたはButton内のオブジェクトにアクセスできます。私は上記のコードでそれを行います。もし私が* Iではない*の場合、それは違うストーリーです – divillysausages
あなたはボタンの中にボタンでアニメーション効果を加えたい場合、ボタンの中にMovieClipを作成してみてください。上から上にMovieClipを別にしてください。 – hardik