我最近开始使用动作脚本3为学校项目编写游戏。现在看完一些教程后,我想把脚本与彼此结合起来,以获得我想要的游戏。
现在出现的问题是需要转换动画片段,但闪光灯无法转换。为什么必须转换:我没有线索。正如我之前所说,我是一个绝对的初学者。
我也搜索过网络和这个网站,但似乎没有什么相同,所以我不知道如何解决它。
Flash Builder出现以下错误:
TypeError: Error #1034: Type Coercion failed: cannot convert objects::Player@a1d2101 to flash.display.MovieClip.
at screens::inGame/checkStuff()[C:\Users\Henk-Jan\Dropbox\Project P2 CMD 1\4. Multimedia production\Tutorials\StarlingProject\src\screens\inGame.as:294]
inGame.as第294行:
for(var i:int = 0; i < blocks.length; i++)
{
blocks[i].checkObj(char, i); //LINE 294*************************
for(var s:int = 0; s < enemies.length; s++)
blocks[i].checkObj(enemies[s], i);
}
块中的checkObj函数:
public function checkObj(obj:MovieClip, place:int):void{
if(obj.x + obj.width / 2 > x - width / 2 && obj.x < x - width / 2 + 7 && Math.abs(obj.y - y) < height /2){
obj.x = x - width / 2 - obj.width / 2;
}
if(obj.x - obj.width / 2 < x + width / 2 && obj.x > x + width / 2 - 7 && Math.abs(obj.y - y) < height /2){
obj.x = x + width / 2 + obj.width / 2;
}
if(Math.abs(obj.x - x) < width / 2 + obj.width / 2 && obj.y < y - height / 2 && obj.floor > y - height / 2 && obj.onBlock != place){
obj.floor = y - height / 2;
obj.onBlock = place;
}
if(Math.abs(obj.x - x) >= width / 2 + obj.width / 2 && obj.onBlock == place){
obj.onBlock = -1;
obj.floor = 600;
}
if(obj.y - obj.height / 2 < y + height / 2 && obj.y > y && Math.abs(obj.x - x) < width / 2 + obj.width / 2){
obj.y = y + height / 2 + obj.height / 2;
}
所以,这是在Starling框架中构建的。上面的代码我是一个更大的代码的一部分,我不会在这里发布,因为你们可能不会喜欢这样。 var blocks是一个Array,其中包含char所在的块。
对于愿意将整个代码导入Flash构建器的人&gt; http://www75.zippyshare.com/v/37202056/file.html
我希望我的问题能够很快得到解决,因为我的截止日期已经在下周了......
最好的问候,
亨克-扬
答案 0 :(得分:0)
问题不在于您需要转换动画片段,问题是您正在尝试将Player
课程强制转换为MovieClip
课程(不是&#&# 39; T)。 checkObj()
的第一个参数为obj:MovieClip
。这是问题所在。可以将其更改为obj:Player
,也可以使用通配符obj:*
对其进行概括。