Actionscript 3 错误#1034:类型强制失败:无法转换对象::Player@a1a4101flash.display.MovieClip

Actionscript 3 错误#1034:类型强制失败:无法转换对象::Player@a1a4101flash.display.MovieClip,actionscript-3,Actionscript 3,我最近开始为一个学校项目用动作脚本3编写游戏。现在,在看了一些教程之后,我想将脚本与其他脚本结合起来,以获得我想要的游戏 现在出现的问题是需要转换movieclip,但flash无法转换。为什么要转换:我不知道。正如我之前所说,我是一个绝对的初学者 我已经搜索了网页和这个网站,但似乎没有什么是相同的,所以我不知道如何解决它 Flash Builder出现以下错误: TypeError: Error #1034: Type Coercion failed: cannot convert objec

我最近开始为一个学校项目用动作脚本3编写游戏。现在,在看了一些教程之后,我想将脚本与其他脚本结合起来,以获得我想要的游戏

现在出现的问题是需要转换movieclip,但flash无法转换。为什么要转换:我不知道。正如我之前所说,我是一个绝对的初学者

我已经搜索了网页和这个网站,但似乎没有什么是相同的,所以我不知道如何解决它

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);
        }
for(变量i:int=0;i
Block.as中的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;
        }
public function checkObj(obj:MovieClip,place:int):无效{
如果(obj.x+obj.width/2>x-width/2&&obj.xx+width/2-7&&Math.abs(对象y-y)y-height/2&&obj.onBlock!=位置){
obj.地板=y-高度/2;
obj.onBlock=位置;
}
if(Math.abs(obj.x-x)>=width/2+obj.width/2&&obj.onBlock==place){
obj.onBlock=-1;
目标楼层=600;
}
如果(obj.y-obj.height/2y&&Math.abs(obj.x-x)
所以,这是在Starling框架中构建的。上面的代码是一个更大的代码的一部分,我不会在这里发布,因为你们可能不喜欢。var blocks是一个数组,其中包含块,其中字符位于ingame上

对于那些愿意将整个代码导入flash builder的人>

我希望我的问题能很快解决,因为我的最后期限已经是下周了

致以最良好的祝愿


Henk Jan

问题不在于你需要转换一个movieclip,问题在于你试图将一个
Player
类强制转换成一个
movieclip
类(它不是)。
checkObj()
的第一个参数是
obj:MovieClip
。这就是问题所在。要么将其更改为
obj:Player
,要么使用通配符将其概括为
obj:

但请大家帮忙,不要使用通配符。谢谢!通配符可以工作。多个对象正在执行此函数,那么您建议LDMS做些什么?什么时候我设置了“玩家”而不是*它修复了玩家错误,但“敌人”对象也使用了该功能。我假设你的玩家和敌人类是从精灵扩展而来的?如果是这样,(IIRC)您应该能够使用
obj:Sprite
,而且它应该可以工作,因为Player和敌人都是派生类。请注意,除非您将
myPlayer:Player=obj作为Player
myEnemy:敌军=obj作为敌人