Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Помогите начинающему писать грамотно код.. (http://www.flasher.ru/forum/showthread.php?t=109392)

tibo 13.03.2008 15:48

Помогите начинающему писать грамотно код..
 
Вложений: 1
С AS разбираюсь примерно год. Т.е. можно сказать совсем недавно. Опыта программирования в других языках нет. Вот и решил окунуться в AS. Обзавелся соответствующей литературой. И вот решил проверить свои силы на примере собственной игрушки. Конечно исходников игр в нете много, и можно было бы что-нибудь подчерпнуть для себя, но код в них разбросан по разным кадрам.....клипам... и. т.д. и.т.п. Насколько мне известно от этого надо избавляться и это не есть пример подражания.
Решил писать и рисовать все от себя и с нуля и по своим ощущениям.

Сценарий.
Поэкрану бегает мышь, которая собирает сыр. Мышка может отстреливать врага. Вот пока и собственно все (см. файл).
Далее предполагается создать несколько уровней, бонусы и т.д.


В связи с этим у меня возникло несколько вопросов к опытным, матерым AS программерам (прошу прощения если неграммотно изьясняюсь:

1. В игре я не использую собственные классы, а наверное это не хорошо с точки зрения ООП и по причине того, что в дальнейшем игра предусматривает более сложный сценарий (уровни, бонусы и т.д.)
Как их граммотно создать, сколько их должно быть?
(Мышь, Враг, Сыр..... или я вобще туплю на этот счет)

Может у кого нибудь есть исходник какой-нибудь аркады с использованием классов или вы можете исправить общую структуру моего кода.

2. Плохо ли использовать onEnterFrame для подобных игр, или основную функцию игры нужно загонять в setInterval?


3. Какие грубые ошибки, с точки зрения программирования я допускаю в коде? (Да бы не делать это больше никогда).

Заранее примного благодарен. Файлик-исходник прилагается.

wvxvw 13.03.2008 16:20

Ну, http://opensource.adobe.com/wiki/dis...ng+Conventions
тут конвенции по тому, как непосредственно писать. От себя добавлю, что названия переменных на транслите... ну, как бы, не есть хороший тон =)
Ссылаться на рут плохо равно как и создавать там какие-то переменные.
В игре, особенно с уровнями, очень желательно иметь что то вроде инит- и делит-функции. Чтобы можно было нормально очистить все данные и перезапустить игру по новой.
Создавать функции доступные только из скопа другой функции чревато... Т.е. может так случиться, что эту же функцию нужно будет вызвать из другого места, а обратиться к ней от туда уже никак...

Olegg 13.03.2008 18:58

прикольная игруха)))
названия функций - placeCheese(); - первая буква с маленькой,вторая с большой...
вместо _root надо передавать ссылку на него в функцию...
вместо onEnterFrame как раз в играх используется setInterval();
вместо var plc:Array = []; всё же лучше

Код:

var plc:Array = new Array();
Но самый главный совет - научитесь писать названия функций и переменных настолько явно,чтоб это было понятно любому,кто откроет ваш код.И лучше написать много маленьких функций,чем одну большую.

А так хороший код.

wvxvw 13.03.2008 20:00

Цитата:

вместо var plc:Array = []; всё же лучше


Код:
var plc:Array = new Array();
Тыркаем первый линк в моем посте, и смотрим:
Все классы, создание которых возможно без помощи new рекомендовано создавать именно так.
Код:

var obj:Object = {};
var array:Array = [];
var xml:XML = <xml/>;
var regxp:RegExp = /*/;
var str:String = '';
var num:Number = 0;

Некоторые из АС3, но добавил спецом для полноты картины.

tibo 13.03.2008 22:46

Цитата:

Сообщение от wvxvw
Ссылаться на рут плохо равно как и создавать там какие-то переменные.
....

За ссылку отдельное спасибо. Ознакомился, обязательно учту на будущее.

По поводу рут. Хотелось бы поподробнее.....в связи с этим вопрос:
Для того, что бы не ссылаться на рут мне необходимо в начале создать пустой клип:
Код:

var game:MovieClip = this.createEmptyMovieClip("game", this.getNextHighestDepth());
И в дальнейшем все мувики вставлять в него и плясать относительно этого клипа game, а не _root? Я правильно понял...?

wvxvw 14.03.2008 00:58

Хм... нет, не совсем. Лучше всего оперировать переменными типа MovieClip, тогда не будет необходимости писать имена типа _root['mc'+i].parent.parent.clip. Но, в общем, ход мысли правильный. Просто на каком-то этапе может оказаться необходимым, например, удалить\пересоздать всю сцену\игру\приложение. Если оно созданно в руте, тогда проблем будет куча.


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

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