ActionScript 3.0:错误 #1034:类型强制失败:无法在 CutomeClass() 上将 displa



我是一名学生,我有一个最终项目想在两天后交付。我正在制作一个拖放游戏,我看了一个教程来做到这一点。但是在结束编码后,我遇到了一个奇怪的错误!我已经检查了我的代码是否与教程中的代码相同。


这是调试错误报告:

Attempting to launch and connect to Player using URL E:FLActionScriptDrag and Drop ProjectDragAndDrop.swf
[SWF] E:FLActionScriptDrag and Drop ProjectDragAndDrop.swf - 87403 bytes after decompression
TypeError: Error #1034: Type Coercion failed: cannot convert paper1$ to DragDrop.
    at Targets()[E:FLActionScriptDrag and Drop ProjectTargets.as:23]

我的.fla文件包含 12 个要拖动的对象和另外 12 个要放在其上的对象。

这里的想法是,当将对象放在目标上时,对象将变得不可见,并且目标变得可见(在文件target alpha = 0.fla)。

我做了两节课:

DragDrop.as :对于我要拖动的对象。Targets.as :对于目标,我将在其上放置对象。

注意:匹配功能是在完成游戏时对"游戏结束"影片剪辑进行动画处理。

DragDrop.as:

package 
{
    import flash.display.*;
    import flash.events.*;
    public class DragDrop extends Sprite
    {
        var origX:Number;
        var origY:Number;
        var target:DisplayObject;
        public function DragDrop()
        {
            // constructor code
            origX = x;
            origY = y;
            addEventListener(MouseEvent.MOUSE_DOWN, drag);
            buttonMode = true;
        }
        function drag(evt:MouseEvent):void
        {
            stage.addEventListener(MouseEvent.MOUSE_UP, drop);
            startDrag();
            parent.addChild(this);
        }
        function drop(evt:MouseEvent):void
        {
            stage.removeEventListener(MouseEvent.MOUSE_UP, drop);
            stopDrag();
            if(hitTestObject(target))
            {
                visible = false;
                target.alpha = 1;
                Object(parent).match();
            }
            x = origX;
            y = origY;
        }
    }
}

Targets.as:

package 
{
    import flash.display.*;
    import flash.events.*;

    public class Targets extends MovieClip
    {
        var dragdrops:Array;
        var numOfMatches:uint = 0;
        var speed:Number = 25;
        public function Targets()
        {
            // constructor code
            dragdrops = [paper1,paper2,paper3,paper4,paper5,paper6,
                         paper7,paper8,paper9,paper10,paper11,paper12,];
            var currentObject:DragDrop;
            for(var i:uint = 0; i < dragdrops.length; i++)
            {
                currentObject = dragdrops[i];
                currentObject.target = getChildByName(currentObject.name + "_target");
            }
        }
        public function match():void
        {
            numOfMatches++;
            if(numOfMatches == dragdrops.length)
            {
                win.addEventListener(Event.ENTER_FRAME, winGame);
            }
        }
        function winGame(event:Event):void
        {
            win.y -= speed;
            if(win.y <= 0)
            {
                win.y = 0;
                win.removeEventListener(Event.ENTER_FRAME, winGame);
                win.addEventListener(MouseEvent.CLICK, clickWin);
            }
        }
        function clickWin(event:MouseEvent):void
        {
            win.removeEventListener(MouseEvent.CLICK, clickWin);
            win.addEventListener(Event.ENTER_FRAME, animateDown);
            var currentObject:DragDrop;
            for(var i:uint = 0; i < dragdrops.length; i++)
            {
                currentObject = dragdrops[i];
                getChildByName(currentObject.name + "_target").alpha = 0;
                currentObject.visible = true;
            }
            numOfMatches = 0;
            addChild(win);
        }
        function animateDown(event:Event):void
        {
            win.y += speed;
            if(win.y >= stage.stageHeight)
            {
                win.y = stage.stageHeight;
                win.removeEventListener(Event.ENTER_FRAME, animateDown);
            }
        }
    }
}

。谢谢

您确定要放入目标实例数组中的数组中的内容是拖放实例吗?

        dragdrops = [paper1,paper2,paper3,paper4,paper5,paper6,
                     paper7,paper8,paper9,paper10,paper11,paper12,];

我在代码中没有看到"paper1"的任何定义。你的错误是告诉paper1不是拖放实例。

最新更新