作者famet (就这样吧)
看板Flash
标题[问题] 在global和function中有差别吗
时间Sun Oct 3 19:42:44 2010
不好意思 每天都来一问 @@"
在function中除了存取区域变数的差别外
还有什麽差别吗
因为我有一段让元件移动的code
写在global中就可以运作
写在function中让event trigger去执行这function
元件就不会移动了
基本上有一个array(名称mainMenuList)里面放数个要移动的元件实体名称
因此this[mainMenuList[index]]就是元件的实体
先让他们到指定的位置
然後用motion去替每一个算出它的移动路线
再用animFactory去执行, 再放入array中
接着呼叫array中的object让他们开始移动
编译和执行都没有错误
不过放到这个function里面
就不会移动了
请问是this的关系吗?
那部份的code如下
function afterCenterMotion(event:MotionEvent):void
{
//misc
var i:int = 0;
//Show main menu
var rotateRadius:int = center.width / 2 + this[mainMenuList[0]].height / 2 +
10;
for (i = 0; i< mainMenuList.length; i++)
{
this[mainMenuList[i]].x = center.x;
this[mainMenuList[i]].y = center.y - rotateRadius;
}
var motionArray:Array = new Array();
for (i = 0; i<mainMenuList.length; i++)
{
var rotateAngle:int = 360/mainMenuList.length*(mainMenuList.length-i);
var motionDuration = 24;
var anglePerFrame:int = 360 / motionDuration;
var motionX:Array = new Array();
var motionY:Array = new Array();
var motion:Motion;
for (var j = 0; j<motionDuration; j++)
{
motionX[j] = Math.sin(j * anglePerFrame * Math.PI / 180) * rotateRadius;
motionY[j] = (1-Math.cos(j*anglePerFrame* Math.PI / 180 ))*rotateRadius;
if ( (j+1)/(motionDuration/mainMenuList.length) >= i+1)
{
break;
}
}
motion = new Motion();
motion.duration = motionDuration;
motion.addPropertyArray("x",motionX);
motion.addPropertyArray("y",motionY);
var animFactory = new AnimatorFactory(motion);
animFactory.transformationPoint = new Point(0.500000,0.500000);
motionArray.push(animFactory);
}
for (i = 0; i<mainMenuList.length; i++)
{
motionArray[i].addTarget(this[mainMenuList[i]], 1);
}
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 124.219.8.122
※ 编辑: famet 来自: 124.219.8.122 (10/03 19:44)
1F:→ famet:不好意思 我测了一下 好像和this没关系 10/04 01:02
2F:→ famet:是motion和animfactory在function里没作用 10/04 01:03
3F:→ famet:请问有人知道怎麽解决吗? 10/04 01:03
4F:→ famet:我找到问题了 我把animfactory宣告在function外面就可以了 10/04 12:57
5F:→ famet:虽然我还是不知道为什麽= = 10/04 12:57
6F:→ dsmwang:function内宣告的东西function外面是抓不到的 10/04 14:56