НОВЫЕ ИГРЫЛУЧШИЕ ИГРЫФОРУМ 540 Всего сообщений: 305037
+  Форум FlashPlayer.ru
|-+  Форум по flash играм
| |-+  Академия flash программирования (Модераторы: Lexei, Vetal1992)
| | |-+  Уроки по ActionScript.

Автор Тема: Уроки по ActionScript.  (Прочитано 65069 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Уроки по ActionScript.
« : 06 Ноября 2010, 19:42:59 »
Доброе время суток.

ПРОСЬБА вопросы задавать в соседней теме, дабы не зафлуживать эту ))

Ссылка на тему:
http://www.flashplayer.ru/forum/index.php/topic,13143

Я не буду вдаваться в детали и прочее, для этого существуют книги, я же постараюсь как можно короче и проще объяснить язык программирования ActionScript. Сначала 2.0, а потом 3.0.  Поэтому здесь будет лишь основа, для дальнейшего изучения. + небольшие задания.

Поначалу будет скучно… но, что поделать.

Данные уроки подразумевают, что вы уже знакомы с программой для флэш, и желаете узнать научится программировать на ActionScript.
Если же вы не знакомы с программой, то можете поискать тут:
http://www.flashplayer.ru/forum/index.php/topic,620.0.html

Серия уроков по AS 2.0
Примерно так, но возможно что-то изменится. Буду потихоньку делать.
Урок 0. Функция trace();
Урок 1. Переменные.
Урок 2. Условия. Выражение if
Урок 3. Циклы
Урок 4. Введение в массивы
Урок 5. Функции.
Урок 6. Понятие класс и объект.(Уроки 6 и 7 связанны между собой)
урок 7. Создаем свой первый простенький класс.
Урок 8. Понятие пути и слушателя событий.
Урок 9. Подробнее о слушателях+справка.
Урок 10-*. Встроенные классы, учимся программировать. (Уроки посвященные этому разделу будут выложены отдельным циклом(если я их закончу конечно))

Уроки по ActionScript 3.0 - Пост №54

Урок 0. Функция trace();

Первое, с чего мы начнем, это функция trace();
Эта функция позволит нам выводить разные сообщения в панель output(вывод). Таким образом мы будем видеть, что происходит.
Как она работает?
Все, что написано между скобок будет выведено.
Давайте начнем с простого примера. Откроем наш флэш, создадим *.FLA AS2.0 файл, сохраним его куда-нибудь и запишем на главной шкале следующее.

trace("This is work");

И запустим. Если вы все сделали правильно, то в панели output будет выведено сообщение This is work
Двойные кавычки означают, что это строка , а не переменная. Но об этом ниже.

Задание. Можете пока поразвлечься с этой функцией. ))

P.S. Завтра или сегодня вечером выложу следующий урок.
« Последнее редактирование: 20 Августа 2011, 21:17:51 от Elentarion »

Re: Уроки по ActionScript.
« Ответ #1 : 07 Ноября 2010, 01:15:11 »
ПРОСЬБА вопросы задавать в соседней теме, дабы не зафлуживать эту ))

Ссылка на тему:
http://www.flashplayer.ru/forum/index.php/topic,13143

Урок 1. Переменные.

Нам часто придется хранить какие-то данные. Будь то числа, строки, и прочее. Для этого у нас под рукой есть переменные.
Как создавать переменные? Пока воспользуемся краткой формой.
   имя = значение;
Не забывайте о точке с запятой в конце строки.
Имя – это то, как мы будем обращаться к переменной.  А значение – соответственно то, что хранит эта переменная. Например.

   b = 4;
   name = 3;
   thisIsMyVariables = “В этой переменной этот текст”;


# Небольшое отступление, далее я буду использовать комментарии.
# Комментарии – это код, который никак не обрабатывается, то есть
# флэш его игнорирует(пропускает). Они используются для удобства.
# Комментарии во флэш бывают однострочные и многострочные.
#  // Два слэша. Этот однострочный код. На следующей строке он не действует.
#  /*             */   Такая конструкция многострочна, то есть между этими
#  знаками, текст будет пропущен флэшем.

Итак, вернемся к нашим переменным. Напишем теперь такой код на главной шкале для примера:

а = 1;
trace(a); //Выведет 1;

Есть пару правил:

1)   Переменные начинаются с букв или символа подчеркивания.
2)   Переменные содержат только буквы, знаки подчеркивания и цифры.
3)   Переменная не может быть названа зарезервированным словом. То есть словом, которое уже использует флэш для своих целей.  Например нельзя создать переменные: this , gotoAndPlay , stop. И прочие.
4)   Переменные чувствительны к регистру. Поэтому a и A две разные переменные.

В остальном можете их обзывать как хотите. Но лучше чтобы они отображали то, что в них заложено. Например для хранения числа шаров переменную лучше назвать balls а не wewrf.

Переменные можно складывать, вычитать, умножать, делить и прочее.
Можно в любой момент переопределить.

a = 1;     // Создадим переменную а со значением 1
b = 5;    // Создадим переменную b со значением 5
c = a / b; //  Создадим переменную c со значением a/b. То есть 1/5.( внимание 1/5 = 0.2
//поэтому флэш нам выведет 0.2 а не дробь.) Вместо запятой во флэш используется точка.
a = 7;   // Теперь а равно 7;

Пару примечаний:

1) Во флэш сначала выполняется правая сторона равенства, а потом полученное значение записывается в левую, поэтому следующие конструкции будут верны.
a = a +1;  // К переменой а добавляется 1.
a = a * b;  // а умножается на b

2) Вы можете встретить короткую форму записи.
a += 1; // тоже самое, что и а = а+1;
a -= b; // тоже, что и а = a – b;
a++; // Инкремент, к числу прибавить 1.
a--; // Декремент, от числа отнять 1.

Попрактикуйтесь с переменными, что бы видеть результат используйте функцию trace();
Такой код можно писать прямо на главной временной шкале.

Пример 1:

a = 10;
b = 20;
c = 0;
c = c + 10*5 + b/a;
textVar = “My name is Alexey”;  //Если вы просто скопируете код, перепечатайте кавычки.

second_textVar = textVar + b;
 /*
Так можно делать, флэш автоматически переведет число в строку.
Но вычесть из строки число не получится.

# Еще немного о trace()
# Внутри функции также можно складывать, вычитать, делить значения.
# Пример:   
# trace ("Переменная a равна: " + a); - сложение строки и числа.
# trace (a-b); результат вывода - число полученное при вычитании.
*/

trace(a);
trace(b);
trace(c);
trace(textVar);
trace(second_textVar);

b = 10; // Ну и переопределим.
trace(b);

Пример 2:

a = 'Сегодня '; //Одинарные кавычки - тоже строка.
b = " число";
с = 24;

d = a+c+b;

trace(a+c+b); //Выведет: Сегодня 24 число
trace(d);         //Выведет: Сегодня 24 число
« Последнее редактирование: 01 Января 2011, 21:23:05 от Elentarion »

Re: Уроки по ActionScript.
« Ответ #2 : 07 Ноября 2010, 01:27:14 »
Хочу заметить, что небольшая разница между a++ и ++a присутствует :) Не помню уже точно какая...

Re: Уроки по ActionScript.
« Ответ #3 : 07 Ноября 2010, 11:56:03 »
ПРОСЬБА вопросы задавать в соседней теме, дабы не зафлуживать эту ))
Ссылка на тему:
http://www.flashplayer.ru/forum/index.php/topic,13143

Есть такое))

Ну вообще ++ (--) это не простое прибавление (вычитание). Но пока запомним так. Так как простым языком сложно объяснить и немного громоздко получится.
Если же интересно, то вот статья из хелпа с примерами:
 
Пре-инкрементная форма оператора увеличивает x до 2 (x + 1 = 2) и возвращает результат, как  y:

var x:Number = 1;
var y:Number = ++x;
trace("x:"+x);  //выводится x:2
trace("y:"+y);  //выводится y:2

Пост-инкрементная форма оператора увеличивает x до 2 (x + 1 = 2) и возвращает первоначальное значение x , как результат, y:

var x:Number = 1;
var y:Number = x++;
trace("x:"+x);  //выводится x:2
trace("y:"+y);  //выводится y:1

Re: Уроки по ActionScript.
« Ответ #4 : 07 Ноября 2010, 13:24:35 »
ПРОСЬБА вопросы задавать в соседней теме, дабы не зафлуживать эту ))
Ссылка на тему:
http://www.flashplayer.ru/forum/index.php/topic,13143

Урок 2. Условные выражения. Условие if.

Условные выражения – это выражения, в которых при соблюдении определенных обстоятельств выполняется код. Мы разберем это на примере условного выражения if.

1) Простая запись if.

Запись эта выглядит следующим образом:

if (условие) {
   наш код;
}

Заметьте, что точку с запятой мы не ставим после if, в отличие от переменных.

#  Булева логика. Это выражения, которые могут иметь всего два значения. Это
#  истина или ложь. Во флэше также есть слова, обозначающие эти два значения:
#  true и false. (истина и ложь). В условие используется эта логика.

Если наше условие истина, то наш код будет выполнен. Иначе флэш пропустит  наш код и будет выполняться дальше. Для булевой логики используются в (условие) следующие выражения:
(a > b)        // Больше
(a < b)        // Меньше
(a == b)    // Равно. Обратите внимание на двойной знак равенства, используемый в
условии.
(a !=b )   // не равно.
(a >= b) // Больше или равно
a <= b)    // Меньше или равно

Также мы можем объединить в условие несколько значений, с помощью следующих знаков.
(a>0 && b>0) //а и b больше нуля. Можно вместо && писать and
(a>0 || b>0)   // a или b больше нуля. Можно вместо || использовать or

Пример 1.
a = 0;
b = 5;
trace(“До: ”);
trace(a);  //выводит 0
trace(b);  // Выводит 5
if (b>0 && b>a) {   // Поскольку условие верное, то код между скобками выполнится.
   a = 7;
   b = 8;
}
trace(“После:  ”);
trace(a); // Выводит 7
trace(b); // Выводит 8

Пример 2.
Можно создавать переменные внутри if и вкладывать одно условие в другое.
a = 0;
b = 5;
if (b>0 && b>a) {   // Поскольку условие верное, то код между скобками выполнится.
   a = 7;
   b = 8;
   if(b>0){     // Опять верно.
      c = a+b;
      trace(c); // Выведет 15.
   }
}
trace(c);   // Выведет 15.

2)Запись if вместе с else.
Теперь рассмотрим такую конструкцию:

if (условие) {
   наш код;
}else{
   второй код;
}

То, что находится в фигурных скобках, после выражения else, будет выполнено, если наше условие неверно. То есть в первом варианте мы это выражение опускали.

Пример 3.
a = 0;
b = 0;
if (a !=b) {
   trace(“a не равно b”);  //выполнено не будет, так как условие неверно.
}else{
   trace(“a равно b”);
}

3) Полная запись if.
Полный синтаксис этого выражения выглядит следующим образом:
if (условие) {
   первый код;
}else if (условие 2){
   другой код;
}else if (условие 3){
//   … и так далее до …
}else{
   последний код, если ничего не выполнилось;
}

Задание. Сделайте пример употребления третий записи выражения if. Попрактикуйтесь с разными булевыми значениями. И не забывайте о двойном знаке равно.


Добавление к уроку от Vetal1992

4) Еще одна запись условия. Конструкция "(условие) ? операторы : операторы"

Это способ записи условия в одну строчку. Выглядит запись так:
Цитата:
(условие) ? Если условие верное : Если условие ложное;

Такую запись легко использовать в конструкциях на замену if - else

Рассмотрим пример. У нас есть некая переменная ammo, которая равна 7. Это количество патронов, которые остались в обойме.
Нам нужно вывести сообщение о том, что нужно перезарядиться, либо вывести, что патроны имеются.

В случае использования if-else, мы должны набрать следующий код:

Цитата:
ammo = 7;
if (ammo == 0) {
    trace ("Закончились патроны, перезарядись!");
} else {
    trace ("Патроны еще остались");
}

А теперь сравните с этим кодом:

Цитата:
ammo = 7;
(ammo == 0) ? trace ("Закончились патроны, перезарядись!") : trace ("Патроны еще остались");

//Если переменная ammo будет равна 0, программа выведет "Закончились патроны, перезарядись!"
//Иначе, программа выведет "Патроны еще остались"

Не правда ли проще?

Также можно сокращать и конструкции посложнее. Вот так:

Цитата:
(условие 1) ? Если выполняется первое условие:
(условие 2) ? Если выполняется второе условие:
(условие 3) ? Если выполняется третье условие:
Если ничего из этого не выполняется;

Добавим в наш прошлый пример из стрелялки нож)))

Цитата:
ammo = 7;
weapon = "нож";

(weapon == "нож") ? trace ("У нас нож, нам не нужны патроны"):
(ammo == 0) ? trace ("Закончились патроны, перезарядись!") : trace ("Патроны еще остались");

Точку с запятой нужно ставить в конце конструкции. Каждый знак "?" должен сопровождаться знаком ":". Вот так вот)

Эта конструкция позволяет выполнять только одно действие для каждого условия.

Еще один плюс - эту конструкцию можно использовать прямо в выражении.

Цитата:
ammo=1;
weapon="нож";

message =
(weapon=="нож") ? "У нас нож, нам не нужны патроны":
(ammo == 0) ? "Закончились патроны, перезарядись!" : "Патроны еще остались";   //Этот код присваивает переменной message результат вычисления

trace (message)   //Выведет: "У нас нож, нам не нужны патроны"


« Последнее редактирование: 09 Ноября 2010, 07:07:02 от Elentarion »

Re: Уроки по ActionScript.
« Ответ #5 : 07 Ноября 2010, 13:46:57 »
Гуд уроки :)

Re: Уроки по ActionScript.
« Ответ #6 : 07 Ноября 2010, 15:19:40 »
ПРОСЬБА вопросы задавать в соседней теме, дабы не зафлуживать эту ))
Ссылка на тему:
http://www.flashplayer.ru/forum/index.php/topic,13143

Урок 3. Циклы.

Циклы мы опять же будем рассматривать на примере одного часто используемого цикла.
Цикл for.

Что же такое циклы – это выражения, которые выполняются до тех пор, пока условие остается верным.
Синтаксис цикла for выглядит следующим образом:

for(init; condition; next) {
  наш код;
}

init – это некоторая начальная переменная.
condition – это условие. Если оно становится неверным, то происходит выход из цикла. Используйте булевы выражения.
next – выполняется каждый раз, когда цикл заканчивается. Здесь, для примеров нам и понадобится наш инкремент ++(декремент --)

Проще всего понять работу цикла на примере:
Пример 1:
a = 0;
b = 0;
for(a;a<10;a++){
   trace(a);
}

1)Здесь мы в качестве init, передаем значение а равное 0.
2)Далее цикл проверяет условие condition. Если у нас а<10 то цикл выполняется. То есть выполняется наш код.
3)После этого идет шаг next. То есть к переменой а мы прибавляем еденицу.
4)И все заново с шага 2. И так до тех пор, пока выполняется а<10. Как только условие становится неверным, происходит выход из цикла.

ВНИМАНИЕ. Избегайте огромных и бесконечных циклов.
Ведь если цикл будет слишком большим или бесконечным, то компьютер зависнет на несколько секунд и выдаст соответствующее сообщение.

Также переменные можно создавать внутри цикла.
Пример 2:
for(i=0;i<10;i++) {  //Создаем переменную i прямо в for
   if(i==0) {    //Мы создаем переменную с внутри if.
      c = 0;    //Иначе при каждом проходе цикла
   }             //значению с будет присваиваться 0.
   с += 1;
}
trace(c);

Циклы можно так же вкладывать в друг друга.
Пример 3:
a = 0;
for (i=0;i<10;i++){
   for (m=0;m<10;m++){
      a+=1;
}
trace(a);
}
trace(a); // Выведет а = 100

В этом случае сначала вызовется первый раз внешний цикл, и вызовет внутренний. После завершения внутреннего, управление снова передастся внешнему, который снова вызовет внутренний.
Итак, наш внутренний цикл вызовется 10 раз, и код внутри него 100 раз.

Задание. Попрактикуйтесь с циклами.
Можете еще решить задачи с помощью циклов:
1)   Каждую минуту на станции Ногусломаево в метро входит 30 человек, сколько войдет людей в метро за час?

Ну и одна повышенной сложности, не справитесь, ничего страшного.
2)   Выведите в output таблицу умножения :-)

Решение: Прежде чем смотреть, попробуйте сами решить.

Интересные задания начнутся скорее всего на теме объекты и классы. Пока придется так...
« Последнее редактирование: 07 Ноября 2010, 15:28:22 от Elentarion »

Re: Уроки по ActionScript.
« Ответ #7 : 07 Ноября 2010, 16:04:34 »
Еще есть цикл while :)

Добавлено через: 27 сек.
Например   while(a!=100)

Re: Уроки по ActionScript.
« Ответ #8 : 07 Ноября 2010, 16:11:13 »
Или такой пример:
var i=0; // Счетчик цикла.
while (i<=50) { // Проверочное условие. Если оно истинно — цикл продолжает работу.
         trace (i); // Выводит: 0,1,2... 50
         i++; // Модификация
}

Я уж не стал рассматривать, да и по массивам коротко только пройдусь. На классах вернусь потом к ним.
« Последнее редактирование: 07 Ноября 2010, 17:00:14 от Elentarion »

Оффлайн Vetal1992 Мужской

Re: Уроки по ActionScript.
« Ответ #9 : 08 Ноября 2010, 23:48:11 »
От себя могу добавить, что цикл не всегда является счетчиком. Чаще всего - это повторение подобных операций.

В примерах Elentarion'a он использовал ++ и -- для числовых переменных, то есть делал счетчик от 0 до 10 и т.п.

Рассмотрим такой пример:

Цитата:
for (var i=0;condition!="Цикл закончился";i++) {
   trace(i)
   if(i==10) {
      condition="Цикл закончился";
   }
}

В этом случае массив заканчивается сразу после того, как condition примет значение "Цикл закончился"

Модификация массива может принимать форму не только ++ и --

Покажу на примере:

Цитата:
for (var i=0;i<10;i+=0.1) {
   trace(i)
}

В этом примере цикл выполнится 100 раз, добавляя каждый раз переменной i значение 0.1



Циклы очень сильно загружают процессор. По сути, цикл - это повторное выполнение одних и тех же операций, после которых код продолжает выполняться дальше.

Цикл for (var i=0;i<9999999;i++); за один проход выполнится 10 миллионов раз! Одной этой строчкой можно загрузить процессор до 100% секунд на 5.

Вместо цикла всегда можно использовать асинхронный способ вычисления. Делается это следующим образом:

Цитата:
var interval:Number=setInterval(calculate,0);   //Создаем интервал

var i=0;

function calculate() {            //Цикл выполняется
    trace(i);                          //Операторы цикла (выполняем действия)
   
    i++                                //Модификация
   
   if(i==10000) {                 //Условие выхода с цикла
      clearInterval(interval);   //Завершаем цикл (удаляем интервал)
   }
}

Выглядит всё достаточно сложно, поэтому я никому не рекомендую использовать эту конструкцию на замену for. Это только на крайний случай.

Приведенный выше код выполняет цикл раз в 12 миллисекунд. То есть 10000 операций будут выполняться примерно 2 минуты. Это не всегда приемлимо, поэтому в зависимости от сложности вычислений, можно выполнять цикл частями:


Цитата:
var interval:Number=setInterval(calculate,0);   //Создаем интервал

var i=0;
var times=1000;               //Столько раз будет выполняться цикл за один проход

function calculate() {            //Цикл выполняется
   for(var j=0; j<times && i<10000; j++) {
       trace(i);                          //Операторы цикла (выполняем действия)
   
       i++                                //Модификация
   }
   
   if(i==10000) {                 //Условие выхода с цикла
      clearInterval(interval);   //Завершаем цикл (удаляем интервал)
   }
}

Этот код выполнит 10000 операций за 143 миллисекунды, 100000 операций - 2 секунды.

Если переменную times сделать слишком большой - цикл будет подтормаживать процессор, если слишком маленькой - будет долго выполняться

Для моего процессора (2,63 ГГц @ Core 2 duo) значение times было идеально 1500.
Чем сложнее операция - тем меньше нужно делать число times

Я очень часто использую такие вычисления в своих программах (и в Flash Guitar Hero тоже, при загрузке табулатуры).
« Последнее редактирование: 09 Ноября 2010, 00:42:11 от Vetal1992 »

Re: Уроки по ActionScript.
« Ответ #10 : 10 Ноября 2010, 20:17:03 »
ПРОСЬБА вопросы задавать в соседней теме, дабы не зафлуживать эту ))
Ссылка на тему:
http://www.flashplayer.ru/forum/index.php/topic,13143

Урок 4. Введение в массивы

Этот урок, лишь для того, что бы вы примерно представляли, что такое массивы. Мы потом еще раз вернемся к ним, когда дойдем до встроенных классов, и узнаем, что такое их методы и свойства. ))

Как я уже говорил, переменные могут хранить в себе разные данные. Пока мы познакомились только с числами и строками. Теперь мы познакомимся с массивами.

Массивы представляют из себя список значений, которые хранятся в одной переменной.

Создаются они следующим образом:

имя = [ ] ;

Где имя (Надеюсь вы уже привыкли к именам) – имя нашей переменной с массивом,
а [ ] – обозначает массив.

Способы добавление данных в наш массив:
1) Можно во время создания перечислить через запятую.
   a = [ 1, 2, “Строка” , 9];
   trace(a); // Выведет: 1, 2, “Строка” , 9

   Но если вы снова напишите:
   a = [ 1, 2, 2]; //Данные нашего массива переопределятся.
   trace(a); // Выведет: 1, 2, 2

2) С помощью функции push, перечислить через запятую.
a = [ ];
a.push (1,2,3);
trace(a) // Выведет: 1,2,3
Примечание: Функция push() добавляет элементы в конец строки, поэтому:
   a = [“Начало”,1,2];
   a.push(3,“Конец”);
trace(a); //Выведет: Начало,1,2,3,Конец

3) Обращение к элементам массива:
Элементам внутри массива даются номера, начиная с нуля. Обращение происходит по номеру следующим образом.
имя[номер элемента]
Вот пример обращения:
a = [1,2,3,4,5,6,7,8,9];  //Создаем массив
trace(a[1]);    //Выведет 2. Так как 1 стоит на нулевом номере.
trace(a[0]);   //Выведет 1.
Таким же способом мы можем  их переопределять.
   a = [1,2,3,4];  //Создаем массив
   a[2] = 8;        // Переопределяем второй элемент, не забывайте, нумерация с нуля.
   trace(a);  // Выведет: 1, 2, 8, 4

Если мы создадим номер массива, элементы которого до этого номера не определены. Флэш автоматически создаст места для них:

   a = [1,1,1,1]                // Создаем массив
   a[12] = “Строка”;       //Добавляем двенадцатый элемент.
   trace(a); Выведет: 1,1,1,1,undefined,  ….  undefined,Строка.

undefined – значит не определен.

Кстати:
В качестве номера элемента при обращении, мы можем использовать и переменные. (или то, что дает в качестве значения целое число)
Пример:
number = 1;
a = ["Малина","Клубника","Черника"];
trace(a[number]);    //Не забывайте, отсчет с нуля, поэтому выведет: Клубника
trace(a[number+1]);
trace(a[number+5*5-26]); // number+5*5-26 равняется 0.

Пример использования массивов:

a = 1;

my_array = [
"January",
"February",
"March",
"April",
"May",
"June",
"July",
"August",
"September",
"October",
"November",
"December"]

if(a<=12 && a>=1) {
   trace("Вы выбрали месяц "+my_array[a-1]);
}else{
   trace("Такого месяца нет");
}

Задание:
1) Создайте свой массив.
2) Запишите в массив числа от 0 до 99 используя цикл for
3) Попробуйте записать в массив только четные числа.

Решение:
Напоминаю, что ваше решение вполне может отличаться от моего.
« Последнее редактирование: 10 Ноября 2010, 20:22:13 от Elentarion »

Re: Уроки по ActionScript.
« Ответ #11 : 12 Ноября 2010, 19:14:22 »
ПРОСЬБА вопросы задавать в соседней теме, дабы не зафлуживать эту ))
Ссылка на тему:
http://www.flashplayer.ru/forum/index.php/topic,13143

Урок 5. Функции.

В этом уроке мы познакомимся с таким важным понятием, как функции.

Функции, если говорить просто – это код, который может быть неоднократно вызван.

Создание функций:
Синтаксис создания функции выглядит следующим образом:

function имя_функции (входные параметры функции) {
   наш код;
   return значение;
}

Давайте разбираться, что тут к чему.

# Сразу скажу, что тут есть так называемые необязательные параметры, то есть при
# создании мы их может не указывать. Помните, как было с условием if. Там мы не
# указывали параметр else. То есть он был необязательным.
# Обязательные же параметры должны быть всегда указаны.

Необязательными являются  параметры:
1)   входные параметры функции.
2)   return значение;
 Поэтому мы их рассмотрим позже.

Сейчас разберем пока без них, наш синтаксис выглядит тогда так.
function имя_функции () {
   наш код; // Кстати, эта часть тоже не обязательна )
}

Итак.
function – это ключевое слово для создания функции.
имя_функции ( ) – соответственно имя нашей функции, вместе с круглыми скобками.
наш код; - этот код будет выполнен при вызове функции.

Кстати – круглые скобки отличительная черта функций. 

Вызов функции:
Что бы выполнить наш код, нужно вызвать функцию. Делается это следующим образом:

имя_функции ( );

Давайте посмотрим пример, тут мы создаем нашу функцию, а потом вызываем ее:

function my_fc ( ) {
   trace(“Наша функция вызвалась.”);
}
my_fc ( );  // Выведет: Наша функция вызвалась.

Теперь мы можем не перепечатывать или копировать большой код, а просто при необходимости вызывать его с помощью короткой строки.

Возврат значения - return:

return значение;

Функция возврата return – возвращает из функции значение. Код после выполнения функции return уже выполнен не будет.

На коротком примере все становится ясно:
a = 0;  // Создадим переменную.
function it_fc () {
   return 10; // - возвращаем значение 10.
   trace(a); //- выполнено не будет.
}

a = my_fc();
trace(a); // Функция вернула значение 10, которое мы присвоили а.

Функции также могут вызывать сами себя (рекурсия) или другие функции:

Итак, рекурсия – это вызов функции из неё же самой.
Пример:
a = 0;
function my_fc () {
   a++;
   if (a != 7) {
      my_fc();  // -функция будет вызывать сама себя, пока а не будет равно 7.
   }
}
my_fc();
trace(a);

Вызов другой функции:
function my_fc () {
   trace("This is my_fc code");
}
function second_fc(){
   my_fc();
}
second_fc(); // эта функция вызовет функцию my_fc( );

Входные параметры функции:

Функции можно передавать переменные, с которыми она будет работать.
Для этого нужно при создании функции в круглых скобках указать… Скажу так – переменные “ссылки” через запятую.

Давайте лучше посмотрим на примере:

a = 7;
b = 10;
c = 0;  // Создаем переменные.

function my_fc (fc_A, fc_B){//Указываем в качестве “приемников” переменные fc_A и fc_B
   c = fc_A*fc_B;    //Запишем в переменную c результат умножения fc_A и fc_B.
}

my_fc(a, b);
trace(c);   // выведет 70;

Что же произошло? На самом деле нашим переменным fc_A и fc_B присвоились значения переменных a и b.

Немного сложного:
Видимость переменных:

Но в чем отличие от того, если бы мы просто использовали a и b?
Переменные созданные внутри функции “живут” только во время выполнения функции.
Посмотрим наглядно:
a = 7;
b = 10;
c = 0; 
function my_fc (fc_A, fc_B) {
   c = fc_A*fc_B;
   trace(fc_A*fc_B); // Выведет 70;
}

my_fc(a, b);
trace(fc_A*fc_B); // Выведет NaN

# NaN – Not a Number – не число.
# Undefined – переменной еще не присвоено никакое значение.

Забегу немного вперед…
На самом деле переменные создаются с помощью ключевого слова var.
И переменная созданная внутри функции и переменная созданная снаружи – будут двумя разными переменными.

var a = 7; // Мы создали “внешнюю” переменную а.

function my_fc(){
/* Внутри функции сначала ищется а внутренняя. И если в функции не создана внутренняя, то а внешняя.
*/
   trace(a);  //Мы еще не создали внутреннюю. Выводит внешнюю: 7
   var a = 8; // Эта переменная создана в функции. И с первой a она не связана.
   trace(a); //Тут уже существует внутренняя. Выводит: 8
}
my_fc(); // Выводит     7   и    8
trace(a); // Здесь(вне функции) существует только а – внешняя. Выведет 7.

Это называется эффект перекрывания переменных.

Что бы обратится к конкретной переменной, надо указать ее путь. В данном случае, если уже создана внутренняя, то можно путь к внешней выглядит так: _root.a

Об этом мы еще поговорим в уроке: “Подробнее о переменных” и уроке посвященным путям.

Задание :
Создайте на каждый выделенный заголовок в данном уроке по два своих примера(примеры можно сделать и посложнее чем мои  ;) ).

Re: Уроки по ActionScript.
« Ответ #12 : 28 Ноября 2010, 01:39:15 »
ПРОСЬБА вопросы задавать в соседней теме, дабы не зафлуживать эту ))
Ссылка на тему:
http://www.flashplayer.ru/forum/index.php/topic,13143


Урок 6. Понятия класс и объект.
(урок тесно связан с уроком 7)

И вот мы с вами добрались до самого сложного, до самых важных и сложных понятий, это класс и объект. На самом деле этой теме посвящена даже отдельная и хорошая книга, по которой в принципе я и выучил основы работы с классами. (Колин Мук Основы ActionScript 2.0)

Если вам не совсем понятен этот урок, то ничего страшного, после прочтения переходите к седьмому, там практический пример, он легче для восприятия.

Почему же мы рассматриваем эти понятия вместе, и что это такое?
 
Класс- это лишь ненастоящее представление нашего объекта. Некий шаблон.
А объект – это уже реально существующий… так и скажем - объект.

На самом деле, мы уже много раз с вами применяли классы и объекты.
Вы спросите где?
Помните, мы создавали число. Это уже написанный разработчиками флэша класс Number. Мы его не видим, но можем создать объект из этого класса.

Создание объектов или подробнее о переменных.

Полный синтаксис создания объектов(они же переменные) выглядит так:
var имя : нашКласс = new нашКласс( );

Давайте разбираться:
var – ключевое слово для создания объектов(переменной). Так мы говорим - создай объект.
имя – это имя нашего объекта(переменной).
:нашКласс –  Это строка пишется, чтобы нашей переменной нельзя было присвоить другой класс.
new – ключевое слово, говорящее какой класс дать этому объекту(переменной).
нашКласс ( ) –  класс, данный объекту. Круглые скобки – это конструктор класса. В него иногда нужно передавать обязательные значения.

Таким образом, чтобы создать переменную с числом, мы должны написать:
var a = new Number( );

Но согласитесь, гораздо удобнее использовать краткую форму.
a = 3; //Флэш за нас напишет полную строку, во время компиляции.
Но не все классы можно создать кратко. Там уже используется полный синтаксис.

Типы данных. (конструкция :нашКласс)
 
Давайте рассмотрим следующий пример:

param = 7; // Задаем переменной число
param = “Строка”; //Задаем переменной строку

Если расписать, то это  можно представить так:

var param; //Создаем переменную
param = new Number(); // Задаем переменной класс число.
param = 4; //Присваиваем число
param = new String(); // Задаем переменной класс строка.
param = “Строка”; //Присваиваем строку

Класс нашей переменной – это тип данных, который в ней хранится.
Мы может жестко задать тип переменной. Тот же код, но с добавлением:

var param:Number; // Задаем жестко тип данных для нашей переменной.
param = new Number(); // Задаем переменной класс число.
param = 4;
param = new String(); // Выдаст ошибку, переменной может быть задано только число.
param = “Строка”;

То, что надо запомнить:
1) Послесловие к объектам.

Как вы уже поняли, объекты в отличие от классов существуют, и с ними мы может производить какие-нибудь действия.

Создаются объекты так:
var имя = new нашКласс( );

Давайте перейдем к классам и посмотрим из чего же они состоят…

2) Предисловие к классам.

Класс – это шаблон, по которому можно создать объект.
Класс состоит из переменных и функций.
« Последнее редактирование: 28 Ноября 2010, 04:09:21 от Elentarion »

Re: Уроки по ActionScript.
« Ответ #13 : 28 Ноября 2010, 04:01:14 »
ПРОСЬБА вопросы задавать в соседней теме, дабы не зафлуживать эту ))
Ссылка на тему:
http://www.flashplayer.ru/forum/index.php/topic,13143

Урок 7. Создаем свой первый класс
Чтобы все стало на свои места, давайте создадим свой класс.
Для этого мы должны загрузить его во флэш.

Подготовка (первый способ назначения пути к классам):
1)   Создайте папку, например flash. В ней мы будем сохранять наши .fla файлы.
2)   Внутри этой папке создайте папку script. Сюда мы будем сохранять наши .as файлы, содержащие написанные классы.
3)   Откройте флэш и выберете создать flash file (action script 2.0). Сохраните его в нашу папку flash.
4)   Создайте еще один файл, но на этот раз просто action script file. Сохраните его в  папку script, дайте имя файлу myClass

На данном этапе у вас во флэш должно быть два окна, c первым файлом .fla и второй с файлом .as
Для adobe 2003 и выше:
5) Жмем на файл .fla и делаем следующее:
   Открываем меню file --> publish settings  или же жмем scrl+shift+F12
   Открываем вкладку flash. В строке script жмем на settings.
   Нажимаем на изображение папки и устанавливаем путь до нашей папки script.

Для mx2004:
     5) Жмем меню edit --> prefences или ctrl+u
     Идем во вкладку ActionScript и находим ActionScript Settings
     Нажимает значок прицела и устанавливаем путь к папке script

Теперь флэш подключил папку script к нашему файлу .fla файлу.
Другие способы мы рассмотрим, когда будем писать с помощью ООП.

Пишем свой класс:
Классы пишутся во внешних .as файлах.

Простой синтаксис создания класса выглядит так:
class имяКласса {
   function имяКласса( ) {

}
}

Причем имяКласса должно совпадать с названием .as файла.
function имяКласса – эта функция выполнится сразу, как мы создадим объект.

Я попросил назвать файл myClass, тогда пишем в нашем файле так:
class myClass {
   function myClass( ){ //Это функция выполняется сразу, как создается объект.
      trace(“Вы создали объект класса myClass”);
}
}

Пока все просто. Не забудьте сохранить, а то работать не будет.

Давайте теперь создадим объект, использующий наш класс.
Открываем наш .fla и пишем:

var a = new myClass( );
Теперь, если вы запустите наш файл, то увидите следующую надпись в output:
Вы создали объект класса myClass

Усложняем:
Теперь давайте усложним наш класс, по следующей схеме:
class myClass {
   //Тут мы напишем наши переменные, используемые в классе

   //Функция конструктор, вызывается при создании объекта
   function myClass( ){
      trace(“Вы создали объект класса myClass”);
        }
        //Прочие функции
}

Итак, пишем.
Кстати, наш класс будет суммировать или вычитать два числа, и выводить результат.

class myClass {
   //Тут мы напишем наши переменные.
   //В классах слово var обязательно!!!
   var a = new Number; //Создаем переменные внутри нашего класса.
   var b = new Number; //Иногда круглые скобки можно опускать.
   
   //Функция конструктор
   function myClass(for_a,for_b){ //Передадим нашей функции два числа.
      //При создание объекта запишем их в переменные класса.
      a = for_a;
      b = for_b;
      trace(“переменная(объект) создана”);
   }
   //Тут мы пишем прочие функции.
   //Функция сложения
   function plus(){
      trace(a+b);
   }
   //Функция вычитания
   function minus(){
      trace(a-b);
   }
}

Теперь мы можем протестировать наш класс.

Доступ к свойствам(переменным) и методам(функциям):

Мы создали объект класса, теперь давайте с ним поработаем.
Для доступа к нашим классовым переменным и функция, к ним надо обратится.
Для этого надо прописать путь. Это делается с помощью точки.

var peremen = new myClass(7,9);
trace(peremen.a); //Выведет 7
trace(peremen.b); //Выведет 9
peremen.plus( );//Вызываем функцию нашего класса plus( ); Выводит 16
peremen.minus( );//Выводит -2.


Теперь вы знаете на начальном уровне, как устроен класс и как создаются объекты. А так же обращение к свойствам и методам.
Теперь мы можем с чистой совестью перейти к краткому рассмотрению встроенных классов и потом перейти к совершенствованию своих и ООП (объектно-ориентированное программирование).


Задание:
1)Усовершенствуйте наш класс так, чтобы:
   1.1 Не передавать числа в конструктор, а передавать в функции plus()  и minus()
   1.2 Функции возвращали значения a+b и a-b
   1.3 Напишите свой класс
   1.4 Спустя несколько часов перечитайте уроки 6 и 7. Чтобы лучше запомнилось))
Ответ:
« Последнее редактирование: 28 Ноября 2010, 04:13:01 от Elentarion »

Re: Уроки по ActionScript.
« Ответ #14 : 19 Декабря 2010, 13:00:43 »
А где прогу скачать?

> Тут: http://www.adobe.com/products/flash/
> там и купить её можно)
« Последнее редактирование: 20 Декабря 2010, 01:18:25 от Vetal1992 »

+  Форум FlashPlayer.ru
|-+  Форум по flash играм
| |-+  Академия flash программирования (Модераторы: Lexei, Vetal1992)
| | |-+  Уроки по ActionScript.