Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Взаимодействие между кадрами (http://www.flasher.ru/forum/showthread.php?t=197936)

timedo 15.04.2013 19:12

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

restart.addEventListener(MouseEvent.CLICK, restart2);
 
function restart2(event:MouseEvent):void {
    gotoAndPlay(0);
}

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

Код AS3:

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

Берёте все свои счетчики и переносите их в поля класса:
Код AS3:

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

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

var state:State = new State();

Во всех остальных теперь работаете через state.gameScore, state.hitpoints и т.д.
Цитата:

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

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

timedo 17.04.2013 02:42

Цитата:

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

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

var GameScore:Number = 0;

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

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

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

expl 17.04.2013 14:55

Цитата:

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

var GameScore:Number = 0;
GameScore = 0;



Часовой пояс GMT +4, время: 21:52.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.