PDA

Просмотр полной версии : Взаимодействие между кадрами


timedo
15.04.2013, 19:12
Здравствуйте! У меня в "кадре 1" кнопка, при нажатии на которую "включается" весь код, то есть в этом кадре весь основной код. Я хочу создать кнопку типа "restart", при нажатии на которую все обнуляется и встает на исходные позиции.
Код кнопки "Restart"

restart.addEventListener(MouseEvent.CLICK, restart2);

function restart2(event:MouseEvent):void {
gotoAndPlay(0);
}


Все переходит на 0 кадр, но счетчики не обнуляются(Очки, и т.д.), то есть потом просто на поле налаживаются новые значения. Можно как то написать что то типа того?


restart.addEventListener(MouseEvent.CLICK, restart2);

function restart2(event:MouseEvent):void {
gotoAndPlay(0);
GameScore = 0; // значение которое должно обнулится при нажатии на кнопку. Или указать как то так this.GameScore = 0 ?

}


отелось бы узнать, как можно взаимодействовать между кадрами. Нажав на "кадр 2", обнулился "кадр 1". Спасибо.

caseyryan
15.04.2013, 19:59
как можно взаимодействовать между кадрами. Нажав на "кадр 2", обнулился "кадр 1".
Не писать код в кадрах. Если уж не в классах, то хотя бы вынести весь код на отдельный слой, и не делить его по кадрам.

gagaga
15.04.2013, 21:28
GameScore = 0;
gotoAndPlay(0);

expl
16.04.2013, 02:54
Берёте все свои счетчики и переносите их в поля класса:

public class State {
public var gameScore:int = 0;
public var hitpoints:int = 100;
...
}

В первом кадре пишете:

var state:State = new State();

Во всех остальных теперь работаете через state.gameScore, state.hitpoints и т.д.
GameScore = 0;
gotoAndPlay(0);
Так делать не надо, забудете что надо выставить в нормальное положение.

Стоп.
Вы же и так должны счётчики в первом кадре выставить. Тут проблема в другом.
Покажите как Вы его перед игрой выставляете, этот GameScore.

timedo
17.04.2013, 02:42
Стоп.
Вы же и так должны счётчики в первом кадре выставить. Тут проблема в другом.
Покажите как Вы его перед игрой выставляете, этот GameScore.

Вот я его объявляю:

var GameScore:Number = 0;


Ниже в коде функция для подсчета очков:

function colide()
{
if(ov.hitTestObject(target)) {
GameScore += 600;
}
else if(ov.hitTestObject(target2)) /*
дальше плюсует +500 и т.д. */



Это все в одном кадре.

expl
17.04.2013, 14:55
var GameScore:Number = 0;
Может он только при инициализации класса, автосгенеренного по коду в кдрах, присваивание делает.
А что если так?

var GameScore:Number = 0;
GameScore = 0;