0

この質問がどれほど混乱しているかをお詫びします。

車のムービー クリップがあります。車のムービー クリップには、車に対する 4 つの異なる角度があります。(例: 左、右、前後ろ)。車のボディカラーをダイナミックに変化させます。車の各角度で、車のボディには「body」というインスタンス名があります。コードで色を変更します:

var tempcar = "car_mc" + i;
var myNewTransform = new ColorTransform();
myNewTransform.color = 0x000000 //in real life this is a random value
this[tempcar].body.transform.colorTransform = myNewTransform;

車のムービー クリップに「フロント」フレームを gotoAndPlay するよう指示するまでは、すべて正常に機能します。このフレームでは、車のフロント サイドが表示されます。車のフロントのボディに色の変更を再度適用してみます。エラーが発生します:

TypeError: Error #1009: Cannot access a property or method of a null object reference.

私がやろうとしていることを行うためのより良い方法はありますか?

4

1 に答える 1

0

これは、古いActionScript2の処理方法です。ActionScriptでは、コンテナは必ずしもMovieClipであるとは限りません。これは、動的フィールドにアクセスするためのハッシュを除きます。また、addChildを使用してディスプレイリストに追加した場合、子を自動的にアドレス指定できるActionScript 3の場合はそうではないため、結果も異なります。

動的に作成されたインスタンスを格納してアクセスするには、配列を使用する必要があります。

// clazz would be the symbol
function createInstance(container:DisplayObjectContainer, clazz:Class, list:Array):Sprite
{
  const child:MovieClip = new clazz() as MovieClip;
  if (!child) throw new ArgumentError("Wrong type given");

  return list[list.length] = container.addChild(child);
}

function getInstanceAt(index:int, list:Array):Sprite
{
  return list[index] as Sprite;
}
于 2012-06-06T06:09:39.430 に答える