2016-11-06 9 views
0

Я создаю Android-игру, используя Adobe Animate CC для нашей диссертации, и каждый раз, когда я проверяю свою работу, сначала она отлично работает , но когда я иду к основной игре, есть появляется сообщение об ошибке:"TypeError: Error # 1010: термин неопределен и не имеет свойств" в AS3

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; 
} 

Oops! Мой код слишком длинный. Я проверил свой код во много раз, и ничего не случилось, я также отлаживаю его, и эта ошибка все еще появляется. Я уже объявляю corekWin (movieclip), но btnGo (другой мувиклип, который позволяет щелкнуть) внутри corekWin, не нужно объявлять его, не так ли? Потому что corekWin уже объявлен.

Я пытаюсь исправить эту ошибку, и, к сожалению, она терпит неудачу. Я дважды проверил его. Как вы думаете, в чем проблема с этим кодом?

+0

Вы используете два файла .fla? Кажется, что у вас есть проблема в RECOVER_RECOVER_dmthesis_demo_ver__paggumanarename_Scene14_fla и в OVER_RECOVER_dmthesis_demo_ver__paggumanarename_Scene14_fla Мне сложно понять, в чем проблема, поскольку вы используете много сцен. Код на te1st frame? В сообщении об ошибке говорится, что у вас есть проблема на сцене 14. Я не могу понять, что происходит на сцене 14, и каков ваш код на этой сцене. Чтобы приостановить анимацию, вы должны использовать метод stop() start(), и нет необходимости устанавливать частоту кадров @ 0 . Вы создаете много MC, а не addChild – tatactic

+0

Это непонятно и непонятно. @ Cjoyy27 – tatactic

+0

@tatactic No. Я использую только один файл .fla (этот проект RECOVER_RECOVER_dmthesis_demo_ver__paggumanarename_Scene14.f la). Я просто скопировал из вывода, и я не удалял пробел между REC и OVER (что, предположительно, RECOVER .. извините за это). Я использую много сцен. Я использую «Test Scene», чтобы убедиться, что код, который я создал, работает или нет. Даже я тестирую весь проект, появляется такая же ошибка. – Cathreen

ответ

1

относительно этой линии:

var corekWin:MovieClip = new MovieClip; 

Вы только что создали новый пустой (пустой) MovieClip объект с эталонным именем corekWin, так как вы никогда не делали corekWin.addChild(btnGo); вы не можете сказать;

corekWin.btnGo.addEventListener(MouseEvent.CLICK, gorabelx); 

Это терпит неудачу, потому что corekWin является пустым new Movieclip, он не содержит какой-либо btnGo объекта.

Возможное решение:

Если corekWin является MovieClip в вашей библиотеки (Ctrl + L), то вы должны дать ему связи имени (правое облизывание и перейти к Свойства и укажите имя ссылки, например, назовите его mc_corekWin).

Теперь в вашем коде вы можете создать экземпляр, что существующую MovieClip вместо создания нового пустые один ...:

var corekWin : mc_corekWin = new mc_corekWin(); 

Перед настройкой любых визуальных аспектов, добавить его на сцену через stage.addChild(corekWin); потом вы можете сделать corekWin.visible или corekWin.alpha и так далее.

Edit:

Если MC уже размещен на этапе (во время выполнения), то вам не нужно создавать (или даже new mc_corekWin) переменную new Movieclip. Просто укажите MC на экземпляре имя, которое вы ему дали.

  • Чтобы отменить связь просто вернуться к свойствам MC в библиотеке и ун-тик, что «Экспорт для Actionscript» коробки.

  • Чтобы добавить экземпляр имени, нажмите на MC (нажмите на него на сцене, а не библиотека) и открытые Свойства вкладки (Ctrl + F3), и вы увидите раздел готов к привилегированному вашему имени. Имя, которое вы вводите (и нажмите Enter для обновления), будет использовано в коде.

В принципе, если MC xyz уже на этапе вам не нужно var xyz:MovieClip = new MovieClip; (это будет переопределить на стадии MC), чтобы управлять им с помощью кода, просто дать ему имя экземпляра, а затем использовать имя укажите MC в коде.

Вероятно, вам не нужны такие вары, как gril и linya и т. Д., Чтобы быть new MovieClip. Попробуйте не комментировать их (используя //) и посмотрите, станут ли они теперь «невидимыми».

+0

Хорошо. Я понял. Хм .. как насчет 'btnGo' внутри' corekWin'? Смогу ли я все-таки сделать «addChild»? – Cathreen

+0

P.S. Я просто использую фрагменты кода для этого. – Cathreen

+0

"Upvote"! @ VCOne – tatactic

 Смежные вопросы

  • Нет связанных вопросов^_^