我正在使用下面的代码,当我“追踪(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()
中,我想将Loader“TheVar”更改为其中一个Arrays,其中也是Loaders。我想最终创建一个补间,根据用户的滑动,它将在加载器之间进行更改。
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;
}
}
}
我有一个名为TheContent的LOADER:这是代码:
var TheContent:Loader = new Loader();
我想创建具有图像和SWF内容的SEVERAL“Loaders”。然后我想使用ONE TWEEN将它们移出屏幕,但是动态的补间动画因此它将根据我在TWEEN中制作MovieClip的VAR移动不同的LOADERS。要做到这一点,我需要为TWEEN ... CHANGEABLE制作电影。我想也许最好的方法是创建一个包含LOADERS所有名称的ARRAY,然后随机调用它们并在TWEEN中移动内容。因此,我做了一个阵列:
var myArray:Array = ["TheContent", "TheContent2"];
但我根本无法从RandomM()函数中获取随机变量;所以我以后可以在TWEEN中使用它。该Loader被称为“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
}
我希望这是有道理的。
答案 0 :(得分:3)
"TheContent"
和"TheContent2"
是字符串,而非MovieClip。
如果这些是舞台上MovieClip的实例名称,则需要使用以下内容:
var myArray:Array = [this["TheContent"], this["TheContent2"]);
或更简单:
var myArray:Array = [TheContent, TheContent2];
假设您正在从时间线开始工作。
如果TheContent
和TheContent2
是您拥有的类,则可以使用getDefinitionByName()
从您拥有的字符串创建这些类的实例。例如:
var Base:Class = getDefinitionByName("TheContent") as Class;
var TheVar:MovieClip = new Base();
addChild(TheVar);
答案 1 :(得分:1)
你的问题在于这一行
var r = Math.round(Math.random() * myArray.length);
random将为您提供0到1之间的数字
myArray.length //will give (in your example) 2
让我们说随机给你的值为.75
.75 * 2 = 1.5
当你使用圆函数时,它将四舍五入到最接近的整数,在这种情况下为2(1.5和向上四舍五入)
当你有一个2时它超出你的数组索引,它应该给你一个null
您需要做的是
var r = Math.round(Math.random() * (myArray.length -1) );
然后,您需要访问正确的元素并获取影片剪辑的名称
var mcName:String = myArray[r]
然后访问影片剪辑本身
var THEVAR:MovieClip = this[mcName];
trace(THEVAR);
答案 2 :(得分:1)
根据您的修改,这里有一个答案可以帮助您解决问题。
首先,就像我提到的,你的数组包含字符串而不是加载器本身。你想这样做:
var myArray:Array = [ TheContent, TheContent2 ];
请注意,每个人都缺少"
。
要选择随机加载器并将其分配给TheVar
,请执行以下操作:
var TheVar:Loader = Loader( myArray[int(Math.random() * myArray.length)] );
您现在可以按预期使用TheVar
。