Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 30.01.2011, 12:56
Dezar вне форума Посмотреть профиль Отправить личное сообщение для Dezar Найти все сообщения от Dezar
  № 1  
Ответить с цитированием
Dezar

Регистрация: Jan 2008
Адрес: Питер
Сообщений: 389
Smile как лучше писать код?

здравствуйте.
у меня такои вопрос.
я по старой привычке из 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
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 2  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Цитата:
Сообщение от Dezar Посмотреть сообщение
каким образом лучше работать с сценами?
каким образом "ставить" код на кнопки..
Не писать код в кадрах. Читать книжки.
__________________
Отряд Котовскага

Старый 30.01.2011, 13:53
Dezar вне форума Посмотреть профиль Отправить личное сообщение для Dezar Найти все сообщения от Dezar
  № 3  
Ответить с цитированием
Dezar

Регистрация: Jan 2008
Адрес: Питер
Сообщений: 389
Цитата:
Не писать код в кадрах. Читать книжки.
спасибо конечно.но вам бы читать повнимательнее.

Старый 30.01.2011, 14:07
Anton Riot вне форума Посмотреть профиль Отправить личное сообщение для Anton Riot Посетить домашнюю страницу Anton Riot Найти все сообщения от Anton Riot
  № 4  
Ответить с цитированием
Anton Riot

Регистрация: Sep 2008
Адрес: Москва
Сообщений: 291
Отправить сообщение для Anton Riot с помощью ICQ
Не понятен вопрос

Старый 30.01.2011, 14:11
Dezar вне форума Посмотреть профиль Отправить личное сообщение для Dezar Найти все сообщения от Dezar
  № 5  
Ответить с цитированием
Dezar

Регистрация: Jan 2008
Адрес: Питер
Сообщений: 389
вопрос в том, как оптимальнее и правильнее писать код.
выше приведены мои примеры.может у кого есть свои

Старый 30.01.2011, 14:11
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 6  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Цитата:
каким образом лучше работать с сценами?
Со сценами лучше не работать, они создают очень много ненужных проблем.
Цитата:
каким образом "ставить" код на кнопки..
Было бы неплохо, создавать для них классы.
Чтобы функция не срабатывала два раза, то не делайте её локальной. То-есть, код в первом кадре должен быть примерно такой:
Код AS3:
var id:Number = 9;
 
clip.addEventListener(MouseEvent.CLICK,clicked);
function clicked(e:MouseEvent):void
{
	otherFunc(id);
}
 
function otherFunc(id:*):void
{
	trace(id);
}
По поводу
Цитата:
Не писать код в кадрах. Читать книжки.
Вам верно говорят.

Старый 30.01.2011, 14:17
Dezar вне форума Посмотреть профиль Отправить личное сообщение для Dezar Найти все сообщения от Dezar
  № 7  
Ответить с цитированием
Dezar

Регистрация: Jan 2008
Адрес: Питер
Сообщений: 389
Цитата:
Вам верно говорят.
ребят.я же специально в скобках написал.код НЕ в кадре.
коды внутри функции, которые вызываются по определенным действиям.
например нажал человек на кнопку старт.активировалась функция 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 вешается до кучи прослушек..как этого избежать

Старый 30.01.2011, 14:23
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 8  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Цитата:
Сообщение от Dezar Посмотреть сообщение
ребят.я же специально в скобках написал.код НЕ в кадре.
Да, действительно.

Старый 30.01.2011, 14:28
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 9  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Код AS3:
  mains.m_gen.addEventListener(MouseEvent.CLICK, function (e)
  {
    genM(id);
  });
Вот и ответ, не стоит использовать анонимные функции.
__________________
тут я

Старый 30.01.2011, 14:32
Dezar вне форума Посмотреть профиль Отправить личное сообщение для Dezar Найти все сообщения от Dezar
  № 10  
Ответить с цитированием
Dezar

Регистрация: Jan 2008
Адрес: Питер
Сообщений: 389
то что не стоит это и я понял)
я и спрашиваю...ЧТО и КАК лучше делать?если не так, то как

Создать новую тему Ответ Часовой пояс GMT +4, время: 03:52.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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