AS3 остановить функцию, затем добавить обратно к кнопке меню - PullRequest
0 голосов
/ 14 января 2020

Здравствуйте, я новичок в AS3, и у меня есть этот простой игровой проект, но я не могу вернуться к кнопке меню. Кто-нибудь может мне помочь ? у проекта есть 3 кадра, кадр 1 = заголовок, кадр2 = меню, кадр 3 = игра, и я хочу go вернуться к кадру 1, когда игра выйдет из игры. но когда я go возвращаюсь к кадру 1 с GotoandStop, он всегда показывает сообщение об ошибке вроде:

TypeError: Ошибка # 1009: не удается получить доступ к свойству или методу пустой ссылки на объект. at next_fla :: MainTimeline / Bintang Go () [next_fla.MainTimeline :: frame3: 88]

или есть способ сбросить все настройки и воспроизвести снова в кадре 1?

это мой код в кадре 3

import flash.events.Event;
game_over.visible=false;
men.visible=false;
var scoree:uint;

tong.addEventListener(Event.ENTER_FRAME,meteorGo)

function meteorGo(ev:Event){
	tong.y+=15
	tong.rotation+=7
	if(tong.y>=810){
		tong.y=0-Math.random()*800
		tong.x=Math.random()*480
	}
	if(tong.hitTestObject(wong)){
		game_over.visible=true;
		men.visible=true;
		wong.x=1600-Math.random()*400
	}
}

import flash.events.Event;

apel.addEventListener(Event.ENTER_FRAME,apelgo)
apel.y=0-Math.random()*800
apel.x=Math.random()*480

function apelgo(ev:Event){
	apel.y+=11
	if(apel.y>=810){
		apel.y=0-Math.random()*800
		apel.x=Math.random()*480
	}
	if(apel.hitTestObject(wong)){
		updateScore5();
		apel.y=0-Math.random()*800
		apel.x=Math.random()*480
	}
}

botol.addEventListener(Event.ENTER_FRAME,botolgo)
botol.y=0-Math.random()*800
botol.x=Math.random()*480
function botolgo(ev:Event){
	botol.y+=12
	if(botol.y>=810){
		botol.y=0-Math.random()*800
		botol.x=Math.random()*480
	}
	if(botol.hitTestObject(wong)){
		updateScore2();
		botol.y=0-Math.random()*800
		botol.x=Math.random()*480
	}
}

bintang.addEventListener(Event.ENTER_FRAME,BintangGo)
bintang.y=0-Math.random()*800
bintang.x=Math.random()*480

function BintangGo(ev:Event){
	bintang.y+=9
	if(bintang.y>=810){
		bintang.y=0-Math.random()*800
		bintang.x=Math.random()*480
		
	}
	if(bintang.hitTestObject(wong)){
		updateScore();
		bintang.y=0-Math.random()*800
		bintang.x=Math.random()*480
	}
}


function init():void
{
	scoree = 0;
	scorecounter.text = scoree.toString();

}


function updateScore5():void
{
	scoree += 5;
     scorecounter.text = scoree.toString();
}

function updateScore2():void
{
	scoree += 2;
     scorecounter.text = scoree.toString();
}

function updateScore():void
{
	scoree += 1;
     scorecounter.text = scoree.toString();
}


bintanga.addEventListener(Event.ENTER_FRAME,BintangGoa)
bintanga.y=0-Math.random()*800
bintanga.x=Math.random()*480

function BintangGoa(ev:Event){
	bintanga.y+=9
	if(bintanga.y>=810){
		bintanga.y=0-Math.random()*800
		bintanga.x=Math.random()*480
		
	}
	if(bintanga.hitTestObject(wong)){
		updateScore();
		bintanga.y=0-Math.random()*800
		bintanga.x=Math.random()*480
	}
}

bintangb.addEventListener(Event.ENTER_FRAME,BintangGob)
bintangb.y=0-Math.random()*800
bintangb.x=Math.random()*480

function BintangGob(ev:Event){
	bintangb.y+=2
	if(bintangb.y>=810){
		bintangb.y=0-Math.random()*800
		bintangb.x=Math.random()*480
		
	}
	if(bintangb.hitTestObject(wong)){
		updateScore();
		bintangb.y=0-Math.random()*800
		bintangb.x=Math.random()*480
	}
}

bintangc.addEventListener(Event.ENTER_FRAME,BintangGoc)
bintangc.y=0-Math.random()*800
bintangc.x=Math.random()*480

function BintangGoc(ev:Event){
	bintangc.y+=9
	if(bintangc.y>=810){
		bintangc.y=0-Math.random()*800
		bintangc.x=Math.random()*480
		
	}
	if(bintangc.hitTestObject(wong)){
		updateScore();
		bintangc.y=0-Math.random()*800
		bintangc.x=Math.random()*480
	}
}
bintangd.addEventListener(Event.ENTER_FRAME,BintangGod)
bintangd.y=0-Math.random()*800
bintangd.x=Math.random()*480

function BintangGod(ev:Event){
	bintang.y+=9
	if(bintangd.y>=810){
		bintangd.y=0-Math.random()*800
		bintangd.x=Math.random()*480
		
	}
	if(bintangd.hitTestObject(wong)){
		updateScore();
		bintangd.y=0-Math.random()*800
		bintangd.x=Math.random()*480
	}
}

mobil.addEventListener(Event.ENTER_FRAME,MobilGO)
mobil.y=-1600-Math.random()*800
mobil.x=Math.random()*480

function MobilGO(ev:Event){
	mobil.y+=20
	if(mobil.y>=810){
		mobil.y=-1600-Math.random()*800
		mobil.x=Math.random()*480
		
	}
	if(mobil.hitTestObject(wong)){
		game_over.visible=true;
		men.visible=true;
		wong.x=1600-Math.random()*400

	}
}




Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;

men.addEventListener(TouchEvent.TOUCH_TAP, m12);

function m12(event:TouchEvent):void
{
	removeEventListener(Event.ENTER_FRAME,MobilGO);
	removeEventListener(Event.ENTER_FRAME,meteorGo);
	removeEventListener(Event.ENTER_FRAME,apelgo);
	removeEventListener(Event.ENTER_FRAME,botolgo);
	removeEventListener(Event.ENTER_FRAME,BintangGoa);
	removeEventListener(Event.ENTER_FRAME,BintangGob);
	removeEventListener(Event.ENTER_FRAME,BintangGoc);
	removeEventListener(Event.ENTER_FRAME,BintangGod);
	removeEventListener(Event.ENTER_FRAME,BintangGo);


	removeChild (tong);
	removeChild (botol);
	removeChild (apel);
	removeChild (bintang);
	removeChild (wong);
	removeChild (bintanga);
	removeChild (bintangb);
	removeChild (bintangc);
	removeChild (bintangd);
	removeChild (mobil);
	gotoAndStop(1);

}

stop();

tyvm, если ты сможешь мне помочь

1 Ответ

0 голосов
/ 14 января 2020

На и кадр 1 и кадр 2 основной временной шкалы, попробуйте добавить stop(); как самое первое.

Судя по сообщению об ошибке, в котором упоминается "кадр 3", я предполагаю, что он пытается go перейти к кадру 3, и поэтому явный вызов stop() как можно скорее может предотвратить это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...