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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 16.12.2012, 14:25
Wild вне форума Посмотреть профиль Отправить личное сообщение для Wild Посетить домашнюю страницу Wild Найти все сообщения от Wild
  № 1  
Ответить с цитированием
Wild
 
Аватар для Wild

Регистрация: Dec 2012
Адрес: Екатеринбург
Сообщений: 36
Отправить сообщение для Wild с помощью ICQ Отправить сообщение для Wild с помощью Skype™
По умолчанию Правильность написания кода

Здравствуйте. Я хотел узнать, изучая экшенскрипт по учебникам adoba в голове иногда начинается полный бардак. Так как мне кажется что в этих учебниках правильность написания кода представлена не совсем правильно а в обратном порядке или может быть я чтото не так понимаю. Подскажите пожайлуста какой обрывок кода написан наиболее правильно.

1)
Код AS3:
 
/*1) вызываем функцию setLanguage */
setLanguage();
/*2) добавляем обработчики кнопок для функции setLanguage*/
English_btn.addEventListener (MouseEvent.CLICK, setEnglish);
German_btn.addEventListener (MouseEvent.CLICK, setGerman);
Spanish_btn.addEventListener (MouseEvent.CLICK, setSpanish);
 
/*3)  Меняем значение переменной language*/
 
function setEnglish(e:MouseEvent):void{
    language = "English";
    setLanguage();
}
function setGerman(e:MouseEvent):void{
	language = "German";
	setLanguage();
}
function setSpanish(e:MouseEvent):void{
	language = "Spanish";
	setLanguage();
}
 
 
/*4) Выводим значение переменной language */
function setLanguage():void{
	if(language == "English") {
info_txt.text = "The animacion has played " + String(count) +" x.";
	}
else if(language == "German") {
info_txt.text = "Die Animation wurde " + String(count) + " x abgespielt.";
    }
else if(language == "Spanish") {
info_txt.text = "La animaciyn ha juardo " + String(count) + " x.";
}
}
2)
Код AS3:
function setLanguage():void {
	if (language == "English") {
		info_txt.text = "The animation has played " + String(count) + " x.";
	} else if (language == "German") {
		info_txt.text = "Die Animation wurde " + String(count) + "x abgespielt.";
	} else if (language == "Spanish") {
		info_txt.text = "La animación ha jugado " + String(count) + "x.";
	}
}
setLanguage();
 
english_btn.addEventListener(MouseEvent.CLICK, setEnglish);
german_btn.addEventListener(MouseEvent.CLICK, setGerman);
spanish_btn.addEventListener(MouseEvent.CLICK, setSpanish);
 
 
function setEnglish(e:MouseEvent):void {
	language = "English";
	setLanguage();
}
function setGerman(e:MouseEvent):void {
	language = "German";
	setLanguage();
}
function setSpanish(e:MouseEvent):void {
	language = "Spanish";
	setLanguage();
}
код один итотже но порядок размещения изменен.

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

Регистрация: Oct 2010
Сообщений: 1,049
Отправить сообщение для bav с помощью ICQ
В отличии от C, где до вызова функции должно быть хотя бы ее объявление, в данном примере порядок записи кода не важен. Более мудрые товарищи на форуме, пожалуй, смогут объяснить почему так. От себя добавлю, что если оба варианта кода работают корректно, то оба они написаны правильно.

Старый 16.12.2012, 15:03
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 3  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
В кадрах пишите?
Порядок кода не важен. Но эстетически лучше сначала описать все функции (в алфавитном порядке). А потом на них подписаться.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 16.12.2012, 15:17
Wild вне форума Посмотреть профиль Отправить личное сообщение для Wild Посетить домашнюю страницу Wild Найти все сообщения от Wild
  № 4  
Ответить с цитированием
Wild
 
Аватар для Wild

Регистрация: Dec 2012
Адрес: Екатеринбург
Сообщений: 36
Отправить сообщение для Wild с помощью ICQ Отправить сообщение для Wild с помощью Skype™
Цитата:
Сообщение от iNils Посмотреть сообщение
В кадрах пишите?
Порядок кода не важен. Но эстетически лучше сначала описать все функции (в алфавитном порядке). А потом на них подписаться.
Да пишу в кадрах. И понимаю что на данный момент порядок написания кода не важен если он так и так работает, но хочю понять как было-бы правельнее в дальнейшем писать порядок кода если бы от этого зависила работа скрипта. Потому-что в голове сейчас каша и просто хочю разобратся.

Я имею в виду тот порядок обработки тех или иных функций Например: Вышел из дома, подошел к машине, сел в машину, повернул ключ замка зажигания. А не в обратном порядке как описано в учебнике.

Если смотреть код из учебника №2) то тут получается что мы сначало проверяем значение переменной и выводим сообщение, потом обрабатываем нажатие кнопки, и в последнюю очередь изменяем значение переменной.

Старый 16.12.2012, 15:32
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 5  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Описание функции это описание, а вызов это вызов. Пока Вы пишете в кадрах, нет разницы где Вы разместите описание — Ваш код при компиляции будет преобразован в класс, функции будут выдернуты из последовательного кода и займут свое место в теле класса, а остальной код, включая вызовы, будет в сохраненном порядке помещен в конструктор. Функции — это члены класса. К ним обращаются по имени, а не по порядковому номеру. Нет разницы, в каком порядке у Вас в кармане лежат монетки.
__________________
Reality.getBounds(this);

Старый 16.12.2012, 16:14
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 6  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Цитата:
Пока Вы пишете в кадрах, нет разницы где Вы разместите описание — Ваш код при компиляции будет преобразован в класс, функции будут выдернуты из последовательного кода и займут свое место в теле класса, а остальной код, включая вызовы, будет в сохраненном порядке помещен в конструктор.
Не совсем так. Если ты объявляешь функцию как function test (){}, то определении функции будет инициализировано в самом начале, а вот если test = function (){}, то вызвать ее можно будет только после определения, а до - даст ошибку при компиляции.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 16.12.2012, 16:45
Hauts вне форума Посмотреть профиль Отправить личное сообщение для Hauts Посетить домашнюю страницу Hauts Найти все сообщения от Hauts
  № 7  
Ответить с цитированием
Hauts
 
Аватар для Hauts

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
Цитата:
Если ты объявляешь функцию как function test (){}, то определении функции будет инициализировано в самом начале, а вот если test = function (){}, то вызвать ее можно будет только после определения, а до - даст ошибку при компиляции.
function test() {} - это объявление функции.

test = function (){} - это объявление переменной же.

Я к тому, что под понятием "объявление функции" именно первый вариант имеется в виду, Wolsh прав
__________________
hauts.ru

Старый 17.12.2012, 03:26
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 8  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Цитата:
test = function (){} - это объявление переменной же.
...и функции, на которую переменная содержит ссылку. А она не может быть объявлена ранее, так как код еще не выполнился. Отсюда и беда с анонимными функциями, они создается каждый раз.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

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

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

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


 


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


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