我是一名学生,我有一个最终项目想在两天后交付。我正在制作一个拖放游戏,我看了一个教程来做到这一点。但是在结束编码后,我遇到了一个奇怪的错误!我已经检查了我的代码是否与教程中的代码相同。
这是调试错误报告:
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不是拖放实例。