"TypeError: Error #1010: A term is undefined and has no properties" in AS3
"TypeError: Error #1010: A term is undefined and has no properties" in AS3
我正在使用 Adobe Animate CC 创建一个 Android 游戏作为我们的论文,每次我测试我的作品时,一开始它运行良好,但是当我进入主游戏时,有一个出现错误:
Error #1010: A term is undefined and has no properties at RECOVER_RECOVER_dmthesis_demo_ver__paggumanarename_Scene14_fla::MainTimeline/frame1()[RECOVER_RECOVER_dmthesis_demo_ver__paggumanarename_Scene14_fla.MainTimeline::frame1:160]
这是我的代码(包括注释代码):
import flash.events.MouseEvent;
import flash.display.MovieClip;
import flash.events.Event;
import flash.display.Stage;
import flash.utils.Timer;
gril.gotoAndStop('a');
var gril:MovieClip = new MovieClip;
var linya:MovieClip = new MovieClip;
var timer:MovieClip = new MovieClip;
var scorer:MovieClip = new MovieClip;
var xDistance:Number
var yDistance:Number
var fl_SecondsToCountDown:Number = 5;
var fl_CountDownTimerInstance:Timer = new Timer(1000, fl_SecondsToCountDown);
var vx:Number = 5;
var vy:Number = 5;
var bg:MovieClip = new MovieClip;
var bg2:MovieClip = new MovieClip;
var qnaWin:MovieClip = new MovieClip;
var corekWin:MovieClip = new MovieClip;
var maliWin:MovieClip = new MovieClip;
var gameOverWin:MovieClip = new MovieClip;
//var btnPause:Button = new Button;
//var forward:Button = new Button;
bg.visible = true;
bg2.visible = false;
gril.visible = true;
linya.visible = true;
btnPause.visible = true;
pauseWin.visible = false;
qnaWin.visible = false;
corekWin.visible = false;
maliWin.visible = false;
scorer.visible = false;
timer.visible = false;
forward.visible = true;
gameOverWin.visible = false;
//var rightpressed:Boolean = new Boolean(false);
//var leftPressed:Boolean = new Boolean(false);
//var linkspeed:Number = 10;
//var contactApak: Boolean =false;
/*else if(keyEvent.keyCode == Keyboard.LEFT){
leftpressed = true;
}*/
//forward.enabled = true;
forward.addEventListener(MouseEvent.CLICK, myClickReaction);
// speeds ALONG NYPOTENUSE
function myClickReaction (e:MouseEvent):void {
vx = mouseX - gril.x;
vy = mouseY - gril.y;
addEventListener(Event.ENTER_FRAME, onEnterFrame);
gril.x+=10;
gril.gotoAndStop('i');
}
/*stage.addEventListener(MouseEvent.CLICK, keyDownHandler);
function keyDownHandler(event:MouseEvent):void{
if(event == Keyboard.RIGHT){
rightpressed = true;
}
}*/
function onEnterFrame(event:Event):void {
//mc increments by 5 until it reaches mouse - mc (ie the distance)
gril.x += vx;
gril.y += vy;
xDistance = Math.abs(mouseX - gril.x);
yDistance = Math.abs(mouseY - gril.y);
trace (xDistance)
if (xDistance == 0 ) {
removeEventListener(Event.ENTER_FRAME, onEnterFrame);
}
}
/*forward.addEventListener(MouseEvent.CLICK, lakad);
function lakad(event:MouseEvent):void{
if(event.keyCode == Keyboard.RIGHT){
rightpressed = false;
gril.gotoAndStop('a');
}
}*/
/*else if(keyEvent.keyCode == Keyboard.LEFT){
leftpressed = false;
mcgril.gotoAndStop("Stand Left Frame");
}*/
/*stage.addEventListener(Event.ENTER_FRAME, gameLoopi);
forward.addEventListener(MouseEvent.CLICK, gameLoopi);
function gameLoopi(e:Event):void{
gril.x+=10;
gril.gotoAndStop('i');
}*/
/*else if(leftpressed){
linkMC.x-=linkspeed;
linkMC.gotoAndStop("Walk Left Frame);
}*/
if(linya.hitTestObject(gril)){
qnaWin.visible = true;
}
/*if(apak.hitTestPoint(mcgril.x,mcgril.y+15,true)){
contactApak=true;
}
else{
contactApak=false;
}}*/
//btnPause.enabled = true;
btnPause.addEventListener(MouseEvent.CLICK, pois);
function pois(event:MouseEvent):void{
stage.frameRate = 0;
bg.visible = true;
bg2.visible = false;
gril.visible = false;
linya.visible = false;
btnPause.visible = false;
pauseWin.visible = true;
qnaWin.visible = false;
corekWin.visible = false;
maliWin.visible = false;
scorer.visible = false;
timer.visible = false;
forward.visible = false;
gameOverWin.visible = false;
}
pauseWin.btnResume.addEventListener(MouseEvent.CLICK, gorau);
function gorau(event:MouseEvent):void{
bg.visible = true;
bg2.visible = false;
gril.visible = true;
linya.visible = true;
btnPause.visible = true;
pauseWin.visible = false;
qnaWin.visible = false;
corekWin.visible = false;
maliWin.visible = false;
scorer.visible = false;
timer.visible = false;
forward.visible = true;
gameOverWin.visible = false;
}
pauseWin.btnQtm.addEventListener(MouseEvent.CLICK, kweet);
function kweet(event:MouseEvent):void{
gotoAndStop(1, "Scene 1");
}
/*var objectoriginalX:Number;
var objectoriginalY:Number;*/
**corekWin.btnGo.addEventListener(MouseEvent.CLICK, gorabelx);**//this is in the line 160, the main problem
function gorabelx(event:MouseEvent):void{
bg2.visible = true;
bg.visible = false;
//mcbackground.room.pinto(scaleY =-1);
}
//timer.timee.text=fl_SecondsToCountDown.toString();
fl_CountDownTimerInstance.start();
fl_CountDownTimerInstance.addEventListener(TimerEvent.TIMER, foo);
function foo(event:TimerEvent):void
{
fl_SecondsToCountDown--;
timer.timee.text=fl_SecondsToCountDown.toString();
trace(fl_SecondsToCountDown + " seconds");
if(fl_SecondsToCountDown == 0){
gameOverWin.visible = true;
}
}
gameOverWin.btnTry.addEventListener(MouseEvent.CLICK, tryk);
function tryk(event:MouseEvent):void{
bg.visible = true;
bg2.visible = false;
gril.visible = true;
linya.visible = true;
btnPause.visible = true;
pauseWin.visible = false;
qnaWin.visible = false;
corekWin.visible = false;
maliWin.visible = false;
scorer.visible = false;
timer.visible = false;
forward.visible = true;
gameOverWin.visible = false;
}
糟糕!我的代码太长了。我检查了很多次我的代码没有错,我也调试了它仍然出现这种错误。我已经声明了 corekWin(动画片段),但是 corekWin 中的 btnGo(另一个可以点击的动画片段)不需要声明它,对吧?因为已经声明了 corekWin。
我正在尝试修复该错误,不幸的是,它失败了。我已经仔细检查过了。您认为这段代码有什么问题?
关于这一行:
var corekWin:MovieClip = new MovieClip;
您刚刚创建了一个新的空白 (empty) MovieClip 对象,引用名称为 corekWin
,因为您从未做过 corekWin.addChild(btnGo);
,您不能说 ;
corekWin.btnGo.addEventListener(MouseEvent.CLICK, gorabelx);
它失败了,因为 corekWin
是一个空的 new Movieclip
,它不包含任何 btnGo
对象。
可能的解决方案:
如果 corekWin
是您的 库 (ctrl+L) 中的一个 MovieClip,那么您应该给它一个 linkage名称(右击并转到 属性 并提供链接名称,例如将其命名为 mc_corekWin
)。
现在在您的代码中,您可以实例化现有的 MovieClip 而不是创建一个新的空 MovieClip...:[=31=]
var corekWin : mc_corekWin = new mc_corekWin();
在调整任何视觉方面之前,通过 stage.addChild(corekWin);
将其添加到舞台,然后您可以执行 corekWin.visible
或 corekWin.alpha
等等。
编辑 :
如果您的 MC 已经放在舞台上(在运行时),那么您不需要创建 new Movieclip
(甚至 new mc_corekWin
)变量。只需通过您给它的 实例 名称引用 MC。
要撤消 链接 只需返回 库 中的 MC 属性并取消勾选 "Export for Actionscript"框.
要添加一个 实例 名称,单击 MC(在舞台上单击它,而不是库)并打开 Properties 选项卡 (ctrl+F3),您会看到一个为您的首选名称准备好的部分。您键入的名称(并按 Enter 更新)将在代码中使用。
基本上,如果 MC xyz
已经在舞台上,您不需要 var xyz:MovieClip = new MovieClip;
(这将覆盖舞台上的 MC)通过代码控制它,只需给它一个实例名称然后使用名称在代码中引用MC。
可能您不需要 gril
和 linya
等变量成为 new MovieClip
。尝试取消对它们的注释(使用 //
)并查看它们现在是否变为 "not visible"。
我正在使用 Adobe Animate CC 创建一个 Android 游戏作为我们的论文,每次我测试我的作品时,一开始它运行良好,但是当我进入主游戏时,有一个出现错误:
Error #1010: A term is undefined and has no properties at RECOVER_RECOVER_dmthesis_demo_ver__paggumanarename_Scene14_fla::MainTimeline/frame1()[RECOVER_RECOVER_dmthesis_demo_ver__paggumanarename_Scene14_fla.MainTimeline::frame1:160]
这是我的代码(包括注释代码):
import flash.events.MouseEvent;
import flash.display.MovieClip;
import flash.events.Event;
import flash.display.Stage;
import flash.utils.Timer;
gril.gotoAndStop('a');
var gril:MovieClip = new MovieClip;
var linya:MovieClip = new MovieClip;
var timer:MovieClip = new MovieClip;
var scorer:MovieClip = new MovieClip;
var xDistance:Number
var yDistance:Number
var fl_SecondsToCountDown:Number = 5;
var fl_CountDownTimerInstance:Timer = new Timer(1000, fl_SecondsToCountDown);
var vx:Number = 5;
var vy:Number = 5;
var bg:MovieClip = new MovieClip;
var bg2:MovieClip = new MovieClip;
var qnaWin:MovieClip = new MovieClip;
var corekWin:MovieClip = new MovieClip;
var maliWin:MovieClip = new MovieClip;
var gameOverWin:MovieClip = new MovieClip;
//var btnPause:Button = new Button;
//var forward:Button = new Button;
bg.visible = true;
bg2.visible = false;
gril.visible = true;
linya.visible = true;
btnPause.visible = true;
pauseWin.visible = false;
qnaWin.visible = false;
corekWin.visible = false;
maliWin.visible = false;
scorer.visible = false;
timer.visible = false;
forward.visible = true;
gameOverWin.visible = false;
//var rightpressed:Boolean = new Boolean(false);
//var leftPressed:Boolean = new Boolean(false);
//var linkspeed:Number = 10;
//var contactApak: Boolean =false;
/*else if(keyEvent.keyCode == Keyboard.LEFT){
leftpressed = true;
}*/
//forward.enabled = true;
forward.addEventListener(MouseEvent.CLICK, myClickReaction);
// speeds ALONG NYPOTENUSE
function myClickReaction (e:MouseEvent):void {
vx = mouseX - gril.x;
vy = mouseY - gril.y;
addEventListener(Event.ENTER_FRAME, onEnterFrame);
gril.x+=10;
gril.gotoAndStop('i');
}
/*stage.addEventListener(MouseEvent.CLICK, keyDownHandler);
function keyDownHandler(event:MouseEvent):void{
if(event == Keyboard.RIGHT){
rightpressed = true;
}
}*/
function onEnterFrame(event:Event):void {
//mc increments by 5 until it reaches mouse - mc (ie the distance)
gril.x += vx;
gril.y += vy;
xDistance = Math.abs(mouseX - gril.x);
yDistance = Math.abs(mouseY - gril.y);
trace (xDistance)
if (xDistance == 0 ) {
removeEventListener(Event.ENTER_FRAME, onEnterFrame);
}
}
/*forward.addEventListener(MouseEvent.CLICK, lakad);
function lakad(event:MouseEvent):void{
if(event.keyCode == Keyboard.RIGHT){
rightpressed = false;
gril.gotoAndStop('a');
}
}*/
/*else if(keyEvent.keyCode == Keyboard.LEFT){
leftpressed = false;
mcgril.gotoAndStop("Stand Left Frame");
}*/
/*stage.addEventListener(Event.ENTER_FRAME, gameLoopi);
forward.addEventListener(MouseEvent.CLICK, gameLoopi);
function gameLoopi(e:Event):void{
gril.x+=10;
gril.gotoAndStop('i');
}*/
/*else if(leftpressed){
linkMC.x-=linkspeed;
linkMC.gotoAndStop("Walk Left Frame);
}*/
if(linya.hitTestObject(gril)){
qnaWin.visible = true;
}
/*if(apak.hitTestPoint(mcgril.x,mcgril.y+15,true)){
contactApak=true;
}
else{
contactApak=false;
}}*/
//btnPause.enabled = true;
btnPause.addEventListener(MouseEvent.CLICK, pois);
function pois(event:MouseEvent):void{
stage.frameRate = 0;
bg.visible = true;
bg2.visible = false;
gril.visible = false;
linya.visible = false;
btnPause.visible = false;
pauseWin.visible = true;
qnaWin.visible = false;
corekWin.visible = false;
maliWin.visible = false;
scorer.visible = false;
timer.visible = false;
forward.visible = false;
gameOverWin.visible = false;
}
pauseWin.btnResume.addEventListener(MouseEvent.CLICK, gorau);
function gorau(event:MouseEvent):void{
bg.visible = true;
bg2.visible = false;
gril.visible = true;
linya.visible = true;
btnPause.visible = true;
pauseWin.visible = false;
qnaWin.visible = false;
corekWin.visible = false;
maliWin.visible = false;
scorer.visible = false;
timer.visible = false;
forward.visible = true;
gameOverWin.visible = false;
}
pauseWin.btnQtm.addEventListener(MouseEvent.CLICK, kweet);
function kweet(event:MouseEvent):void{
gotoAndStop(1, "Scene 1");
}
/*var objectoriginalX:Number;
var objectoriginalY:Number;*/
**corekWin.btnGo.addEventListener(MouseEvent.CLICK, gorabelx);**//this is in the line 160, the main problem
function gorabelx(event:MouseEvent):void{
bg2.visible = true;
bg.visible = false;
//mcbackground.room.pinto(scaleY =-1);
}
//timer.timee.text=fl_SecondsToCountDown.toString();
fl_CountDownTimerInstance.start();
fl_CountDownTimerInstance.addEventListener(TimerEvent.TIMER, foo);
function foo(event:TimerEvent):void
{
fl_SecondsToCountDown--;
timer.timee.text=fl_SecondsToCountDown.toString();
trace(fl_SecondsToCountDown + " seconds");
if(fl_SecondsToCountDown == 0){
gameOverWin.visible = true;
}
}
gameOverWin.btnTry.addEventListener(MouseEvent.CLICK, tryk);
function tryk(event:MouseEvent):void{
bg.visible = true;
bg2.visible = false;
gril.visible = true;
linya.visible = true;
btnPause.visible = true;
pauseWin.visible = false;
qnaWin.visible = false;
corekWin.visible = false;
maliWin.visible = false;
scorer.visible = false;
timer.visible = false;
forward.visible = true;
gameOverWin.visible = false;
}
糟糕!我的代码太长了。我检查了很多次我的代码没有错,我也调试了它仍然出现这种错误。我已经声明了 corekWin(动画片段),但是 corekWin 中的 btnGo(另一个可以点击的动画片段)不需要声明它,对吧?因为已经声明了 corekWin。
我正在尝试修复该错误,不幸的是,它失败了。我已经仔细检查过了。您认为这段代码有什么问题?
关于这一行:
var corekWin:MovieClip = new MovieClip;
您刚刚创建了一个新的空白 (empty) MovieClip 对象,引用名称为 corekWin
,因为您从未做过 corekWin.addChild(btnGo);
,您不能说 ;
corekWin.btnGo.addEventListener(MouseEvent.CLICK, gorabelx);
它失败了,因为 corekWin
是一个空的 new Movieclip
,它不包含任何 btnGo
对象。
可能的解决方案:
如果 corekWin
是您的 库 (ctrl+L) 中的一个 MovieClip,那么您应该给它一个 linkage名称(右击并转到 属性 并提供链接名称,例如将其命名为 mc_corekWin
)。
现在在您的代码中,您可以实例化现有的 MovieClip 而不是创建一个新的空 MovieClip...:[=31=]
var corekWin : mc_corekWin = new mc_corekWin();
在调整任何视觉方面之前,通过 stage.addChild(corekWin);
将其添加到舞台,然后您可以执行 corekWin.visible
或 corekWin.alpha
等等。
编辑 :
如果您的 MC 已经放在舞台上(在运行时),那么您不需要创建 new Movieclip
(甚至 new mc_corekWin
)变量。只需通过您给它的 实例 名称引用 MC。
要撤消 链接 只需返回 库 中的 MC 属性并取消勾选 "Export for Actionscript"框.
要添加一个 实例 名称,单击 MC(在舞台上单击它,而不是库)并打开 Properties 选项卡 (ctrl+F3),您会看到一个为您的首选名称准备好的部分。您键入的名称(并按 Enter 更新)将在代码中使用。
基本上,如果 MC xyz
已经在舞台上,您不需要 var xyz:MovieClip = new MovieClip;
(这将覆盖舞台上的 MC)通过代码控制它,只需给它一个实例名称然后使用名称在代码中引用MC。
可能您不需要 gril
和 linya
等变量成为 new MovieClip
。尝试取消对它们的注释(使用 //
)并查看它们现在是否变为 "not visible"。