私は以下のコードを使用しており、「trace(TheVar);」ヌルになります。誰もが理由を知っていますか?
var TheVar:MovieClip;
var myArray:Array = ["TheContent", "TheContent2"];
function RandomM()
{
trace(myArray.length);
var r = Math.round(Math.random() * myArray.length);
trace(myArray[r]);
var TheVar:MovieClip = myArray[r] as MovieClip;
trace(TheVar);
}
RandomM();
アップデート:
私がやろうとしていることを示すために完全なコードを入れています
this.stage.scaleMode = StageScaleMode.NO_SCALE;
this.stage.align = StageAlign.TOP_LEFT;
var TheContent:Loader = new Loader();
var TheContent2:Loader = new Loader();
function Load1()
{
TheContent.load(new URLRequest("1.png"));
TheContent.contentLoaderInfo.addEventListener(Event.COMPLETE, LoadContent);
function LoadContent(e:Event)
{
addChild(TheContent);
TheContent.width = ScreenX;
TheContent.height = ScreenY;
Load2()
}
}
function Load2()
{
TheContent2.load(new URLRequest("2.png"));
TheContent2.contentLoaderInfo.addEventListener(Event.COMPLETE, LoadContent);
function LoadContent(e:Event)
{
trace("Jesus");
addChild(TheContent2);
TheContent2.width = ScreenX;
TheContent2.height = ScreenY;
RandomM();
}
}
この関数RandomM()
では、ローダー「TheVar」をこれらの配列の1つに変更します。ここには、ローダーもあります。最終的には、ユーザーのスワイプに応じてローダー間で変化するトゥイーンを作成したいと思います。
var TheVar:MovieClip;
var myArray:Array = [TheContent, "TheContent2"];
function RandomM()
{
trace(myArray.length);
var r = Math.round(Math.random() * myArray.length);
trace(myArray[r]);
var Base:Class = getDefinitionByName(myArray[r]) as Class;
var TheVar:MovieClip = new Base();
}
Load1();
Multitouch.inputMode = MultitouchInputMode.GESTURE;
stage.addEventListener(TransformGestureEvent.GESTURE_SWIPE, fl_SwipeHandler);
function fl_SwipeHandler(event:TransformGestureEvent):void
{
switch(event.offsetX)
{
// swiped right
case 1:
{
// Start your custom code
// This example code moves the selected object 200 pixels to the right.
TheVar.x += 200;
// End your custom code
break;
}
// swiped left
case -1:
{
// Start your custom code
// This example code moves the selected object 200 pixels to the left.
TheVar.x -= 200;
// End your custom code
break;
}
}
switch(event.offsetY)
{
// swiped down
case 1:
{
// Start your custom code
// This example code moves the selected object 200 pixels down.
TheVar.y += 200;
// End your custom code
break;
}
// swiped up
case -1:
{
// Start your custom code
// This example code moves the selected object 200 pixels up.
TheVar.y -= 200;
// End your custom code
break;
}
}
}
CLARIFYへの更新の追加:
TheContentという名前のローダーがあります。コードは次のとおりです。
var TheContent:Loader = new Loader();
画像とSWFコンテンツを含むいくつかの「ローダー」を作成したいと思います。次に、ONE TWEENを使用して画面外に移動したいのですが、トゥイーンを動的に使用して、そのTWEENでMovieClipを作成するVARに応じて異なるローダーを移動します。これを行うには、TWEEN...CHANGEABLEのムービーを作成する必要があります。これを行うための最善の方法は、ローダーのすべての名前を使用して配列を作成し、それらをランダムに呼び出して、TWEENのコンテンツを移動することだと思いました。したがって、私はARRAYを作成しました。
var myArray:Array = ["TheContent", "TheContent2"];
しかし、関数RandomM()からランダム変数を取得することはできません。後でTWEENで使用できます。そのローダーは「TheVar」と呼ばれます。
function RandomM()
{
trace(myArray.length);
var r = Math.round(Math.random() * (myArray.length -1) );
var theMC:String = myArray[r];
TheVar=this[theMC] as MovieClip;
trace(TheVar); //// TO BE USED LATER IN A TWEEN.
/// IT WILL BE ONE TWEEN BUT WILL ANIMATE DIFFERENT MOVIES
}
それが理にかなっていることを願っています。