Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Статьи (http://www.flasher.ru/forum/forumdisplay.php?f=101)
-   -   Знакомство с Flash 9 и ActionScript 3.0 на примере создания аркадной игры (http://www.flasher.ru/forum/showthread.php?t=83431)

etc 05.10.2006 15:29

MerlinTwi, статья замечательная, но есть одно но — почему классы имеют имена в нижнем регистре, да ещё с подчёркиванием?

miramax 05.10.2006 15:45

Пошли придирки не по существу...
Прям всё, если класс в нижнем регистре, то ты полный ламер, и т.п. :)

etc 05.10.2006 16:03

Цитата:

Сообщение от miramax
Пошли придирки не по существу...
Прям всё, если класс в нижнем регистре, то ты полный ламер, и т.п. :)

Нет, я нисколько не придираюсь, но раз уж мы пишем на AS3, то давайте писать правильно. Ведь ещё в AS2 необходимо писать имена с прописной буквы, а тут…

MerlinTwi 05.10.2006 16:04

Цитата:

Сообщение от __etc
MerlinTwi, статья замечательная, но есть одно но — почему классы имеют имена в нижнем регистре, да ещё с подчёркиванием?

Виноват. На момент написания я еще не знал о стандартах написания классов, функций и переменных... ознакомился только после строгого предупреждения от Nirth :)
А вообще там много ляпов, т.к. это первая работа на AS3, например, постоянная привязка к root и хранение ссылок на другие классы, вместо нормальной реализации своих событий и т.п., чувствуется наследие AS2. Будет посвободней время надо переписать красиво.
Хотя с другой стороны, она тем и хороша, что понятна логика для человека, который постоянно работал с AS2 и решил попробовать AS3. Я сейчас, чуть ли не каждый день корректирую базовые классы, происходит постепенная перестройка логики программирования под нормальный ООП, после его извращенной реализации в AS2.

etc 05.10.2006 16:10

Цитата:

Сообщение от MerlinTwi
чувствуется наследие AS2.

Скорее AS1 =)
В AS2 можно писать вполне нормально, событийная модель (EventDispatcher) без привязок и прочая… Просто нужно захотеть.
Я легко могу все свои (ну практически все) AS2 классы переписать (скорее просто удалить реализации того, что есть в AS3) на AS3 без серьёзных переделок.

Впрочем, это нисколько не снижает полезность статьи. Ещё раз спасибо.

Nirth 05.10.2006 22:11

Надеюсь автор не против критики =)


Замечания

Цитата:

(почему бы ему самому не искать в дефолтных imports?).
При написании скрипта в кадрах, прямо в Flash 9, классы из пакетов flash.* импортированны по умолчанию, НО когда ты кодишь свой класс, не о каком дефолте и речи быть не может, потому что ты можешь иметь свой собственный класс - Sprite, EventDispatcher, Loader.

Цитата:

Если необходимо внутри мувика что-то нарисовать (прямоугольник и т.п.) необходимо подключить класс
Код:

import flash.display.Graphics;

Не слышал о таком, в флексе класс

Код:

package
{
import flash.display.Shape
public class Circle extends Shape
{

public function Circle()
{
super();

graphics.beginFill(0xff6600);
graphics.drawCircle(50,50,50);
graphics.endFill();
}

}

}

Отлично компилируется.

Цитата:

Забываем про
Код:

mc.onPress=function() {
    бла-бла-бла
}

Теперь все построено на событиях. Для того чтобы отловить клик мышки по объекту необходимо добавить свою функцию, как реагирующую на событие "click":
Код:

addEventListener("click", mouseDownHandler);
...
function mouseDownHandler(){
}


Ну раньше вообщето все тоже было построенно на событиях =) просто в данной системе используется более близкая реализация Delegating Event Model.

Цитата:

package main {
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.MouseEvent;

public class myButton extends MovieClip {
public function myButton() {
doubleClickEnabled=true;
addEventListener(MouseEvent.DOUBLE_CLICK, onDblClick);
}
private function onDblClick(evt:MouseEvent):void {
trace("onDblClick");
visible=false;
}
}
} Во-первых, надо подключить классы Event и MouseEvent.
Подключение класса Event в данном случае совершенно не нужно.

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

Мне кажется вам стоило пояснить, что в первом примере можно было использовать константу, а во втором значение, а то могут возникнуть конфузы у новичков.

Цитата:

С проверкой bytesTotal на ноль функция Update принимает следующий вид:
У классов не бывает функций и переменных, у них есть методы и свойства.
функции могут быть в пакетах, переменные могут быть в методах и функциях (локальные).

Это не просто название, переменная и функция ни к чему не привязанны, в то время как методы и переменные зависят так или иначе от своего класса.

Цитата:

Код:

// Нажатие кнопки мыши по нашему мувику
function handleMouseDown(event:Event):void {
    startDrag();
}
// Отпустили кнопку мыши
function handleMouseUp(event:Event):void {
    stopDrag();
}


Стоит использовать private или protected, они работают быстрее чем internal (который поставится по умолчанию)

Цитата:

Код:

public function ShowInfo(e:Event=undefined) :void {

Не знаю почему компилятор не выдал ошибки, но в флексе за такое компилятор по рукам бъет, Event не может быть undefined он может быть null, скорее всего компилятор Flash 9 автоматически перегоняет undefined в null.

Цитата:

Код:

// Генерит событие "нужно обновить статистику"
public function doUpdateStatistic() {
    dispatchEvent(new Event("UPDATE_STATISTIC"));
}


Насчет создания событий, имена событий пишутся по стандартам переменных, тоесть имя называлось бы updateStatistics, а уже в классе события(я бы расширил Event по такому случаю) пишут
Код:

public static const UPDATE_STATISTICS:String = "updateStatistics";

Теперь о хорошем

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

Но всеже мне кажется что новенькому читать эту статью опасно, из-за некоторых замечаний которые я указал выше.

Насчет стилизации кода, она нифига не соответствует конвенциям АС, но при этом у нее есть своя, правда я не понял какая :away:

Вобщем гратс!

MerlinTwi 06.10.2006 12:35

Nirth, спасибо за столь подробный разбор статьи. Все замечания учту в версии 2.0

motor4ik 06.10.2006 14:28

ждем с нетерпением...

Merlin а Вы Мука вторую книгу читали? просто по поводу имен классов итд...ООП в AS 2.0 у него очень хоРошо изложено

MerlinTwi 07.10.2006 14:49

Нет, не читал.

Nirth 07.10.2006 21:10

Цитата:

Вы Мука вторую книгу
по твоему моторчик до EAS2.0 у мука была только одна книга=)?


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

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