2016-07-03 31 views
-1

我得到了下面的代码,并且flash事件全部正确加载。 ball是一个影片剪辑并被分配了一个类。如何使实例移动

var speedx: Number=5; 
var speedy: Number=3; 
var myball = new ball(); 
addChild(myball); 
addEventListener(Event:ENTER_FRAME,ballmove); 
function ballmove(e:Event):void{ 
    myball.x+=speedx; 
    myball.y+=speedy; 
} 

但现在的情况myball不会移动,它只是停留在0,0位置。请帮我咨询如何得到这个myball沿staright线移动..

如果我拖了从库中删除实例,然后

myball.x+=speedx; 
myball.y+=speedy; 

完美地工作,但不工作给出addChild后。

+0

你在你的项目中的任何其他代码? – null

+0

Hi @Joseph。欢迎来到StackOverflow。如果答案适合您,请将其标记为正确(点击勾号)。这样其他人可以知道有一个工作解决方案。如果不工作,那么请提供一些反馈,以便其他人可以尝试帮助你。 –

回答

1

在您的代码中错误地使用了Event:ENTER_FRAME时应该是:Event.ENTER_FRAME。我不知道是否有一个“沉默”的错误?在测试影片时,使用Ctrl + Shift + Enter运行调试器(对问题/错误提供更好的反馈)。

var myball = new ball();并不意味着什么。这里类型数据的= 价值,在你的代码已经只是说VAR 名称 = :您可以通过使用这种逻辑声明实例:
VAR 名称。令人惊讶的是它的工作原理,但我不知道如果对此感到满意可能会导致更大的未来项目出现问题?

实例名称仅影响已在舞台上的对象。如果您正在通过代码添加(来自库),请确保您使用其名称创建对象的新实例链接

解决方案:
在库中,用鼠标右键单击“球”对象,然后选择“性能”,在那里确保“名”ball并勾选“为ActionScript导出” (你应该看到“”变成Class: ball)。好的。

现在,在你的代码,你可以通过创建新实例:var myball: ball = new ball(); ...

你的代码看起来应该像

var speedx: Number=5; 
var speedy: Number=3; 
var myball: ball = new ball(); 

addChild(myball); 
addEventListener(Event.ENTER_FRAME, ballmove); 

function ballmove(e:Event):void 
{ 
    myball.x += speedx; 
    myball.y += speedy; 
} 
+0

我想知道:如果连接不起作用,就不会有位于0/0位置的实例。 – null

+0

@null,他还使用'Event:ENTER_FRAME'而不是'Event.ENTER_FRAME',但没有得到通常的错误......我只能提出一个工作解决方案的最佳实践(即使他已经覆盖了某些部分它像联动等) –

+0

这实际上可能是真正的问题。很好的发现。 – null