Форум 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=149707)

Dezar 30.01.2011 12:56

как лучше писать код?
 
здравствуйте.
у меня такои вопрос.
я по старой привычке из AS2 программирую кадрами(не в кадрах код, а просто сцены разбиты на кадры)
когда я на кнопку , которая находится в кадре 1 "ставлю" такои код
Код AS3:

  mains.m_clc.addEventListener(MouseEvent.CLICK, function (e)
  {
    genM(id)
  });

а после перехожу в кадр номер 2 и потом снова возращаюсь в 1 кадр, то функция genM(id) выполняется 2 раза.
если я совершу еще переходы то действия это функции будут повторятся столько раз сколько я делал переходов.
потом я решил сделать иначе.
и стал писать код так.

Код AS3:

 
  mains.m_clc.removeEventListener(MouseEvent.CLICK,genM);///генерация ID
  mains.m_clc.addEventListener(MouseEvent.CLICK,genM);

но и этот метод меня не устраивает.
во-первых я так и не понял как передавать параметр id при таком коде(хэлп читал, но не понял..если можете наглядно показать буду благодарен).
во-вторых по моему это не нормально такои код писать.
поэтому я решил пойти третьим путем.
создавать все сцены в 1 кадре.просто в разных ялоях и папках.и играть с visible.

вопрос знатокам.
каким образом лучше работать с сценами?
каким образом "ставить" код на кнопки..

заранее спасибо.

Котяра 30.01.2011 13:13

Цитата:

Сообщение от Dezar (Сообщение 968985)
каким образом лучше работать с сценами?
каким образом "ставить" код на кнопки..

Не писать код в кадрах. Читать книжки.

Dezar 30.01.2011 13:53

Цитата:

Не писать код в кадрах. Читать книжки.
спасибо конечно.но вам бы читать повнимательнее.

Anton Riot 30.01.2011 14:07

Не понятен вопрос

Dezar 30.01.2011 14:11

вопрос в том, как оптимальнее и правильнее писать код.
выше приведены мои примеры.может у кого есть свои

samana 30.01.2011 14:11

Цитата:

каким образом лучше работать с сценами?
Со сценами лучше не работать, они создают очень много ненужных проблем.
Цитата:

каким образом "ставить" код на кнопки..
Было бы неплохо, создавать для них классы.
Чтобы функция не срабатывала два раза, то не делайте её локальной. То-есть, код в первом кадре должен быть примерно такой:
Код AS3:

var id:Number = 9;
 
clip.addEventListener(MouseEvent.CLICK,clicked);
function clicked(e:MouseEvent):void
{
        otherFunc(id);
}
 
function otherFunc(id:*):void
{
        trace(id);
}

По поводу
Цитата:

Не писать код в кадрах. Читать книжки.
Вам верно говорят.

Dezar 30.01.2011 14:17

Цитата:

Вам верно говорят.
ребят.я же специально в скобках написал.код НЕ в кадре.
коды внутри функции, которые вызываются по определенным действиям.
например нажал человек на кнопку старт.активировалась функция start() такого вот вида...

Код AS3:

private function start():void{
  mains.gotoAndStop(2);
  mains.mes.text = "";
  mains.m_gen.addEventListener(MouseEvent.CLICK, function (e)
  {
    genM(id);
  });
 
//////тут еще куча кода для работы с конкретным кадром сцены..но это все НЕ в кадрах написано
}

так вот..бывает, что эта функия start() вызывается 2 или более раз.соответственно на кнопку mains.m_gen вешается до кучи прослушек..как этого избежать

samana 30.01.2011 14:23

Цитата:

Сообщение от Dezar (Сообщение 969007)
ребят.я же специально в скобках написал.код НЕ в кадре.

Да, действительно.

КорДум 30.01.2011 14:28

Код AS3:

  mains.m_gen.addEventListener(MouseEvent.CLICK, function (e)
  {
    genM(id);
  });

Вот и ответ, не стоит использовать анонимные функции.

Dezar 30.01.2011 14:32

то что не стоит это и я понял)
я и спрашиваю...ЧТО и КАК лучше делать?если не так, то как


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

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