PDA

Просмотр полной версии : Игра BinaryLand для разбора новичкам


Edeisys
08.09.2007, 22:13
Воодушевлённый успешным созданием первой игры на Flash (см. игру Колобомбер по мотивам Bomberman (http://edeisys.ucoz.ru/index/0-11))я решил сделать второй ремейк старой игры. Теперь это Binary Land (http://edeisys.ucoz.ru/index/0-9)
http://edeisys.ucoz.ru/_ld/0/58_binary_001.jpg (http://edeisys.ucoz.ru/index/0-9)
Новичкам вроде меня будет интересно посмотреть новую функцию движения игроков и новую функцию движения врагов (меньше нагрузки на ЦП, более "умное" хождение по лабиринту).
Исходник без звуковых файлов.
Очень подробные комментарии между строк.
upd: 2012-10-29
За давностью лет, совсем побились все ссылки. Прошу прощения. Исправляю.
Исходник: Flash8, as2, 158kb --> (http://edeisys.ucoz.ru/load/0-0-0-65-20)

Mr. Fixit
08.09.2007, 23:43
Немного просмотрев код, советую убивать onEnterFrame таким образом

delete this.onEnterFrame;

И подумай как можно больше сократить код.. уж лишнее наблюдается.

Gh >k
08.09.2007, 23:52
Будем разбираться ) спасибо.
ПС: А это тема не должна быть среди готовых работ?
2 Mr. Fixit - объясните пожалуйста зачем это нужно?

Mr. Fixit
08.09.2007, 23:54
Да! Хочу сказать спасибо за исходник)

Edeisys
09.09.2007, 00:07
Дыкть вот нинаю прям как сократить код-то!
Приходится в каждой сцене повторять все скрипты.
Можно как-нить сделать так, чтобы функцию один раз в каком-нить кадре прописать, а потом вызывать её из любой сцены из любого кадра? Ну типа как ГлобальнаяФункция?

Edeisys
09.09.2007, 00:13
Будем разбираться ) спасибо.
ПС: А это тема не должна быть среди готовых работ?
2 Mr. Fixit - объясните пожалуйста зачем это нужно?

Это к тому, что я писал в кадре onEnterFrame, а потом, чтобы прекратить его выполнение, в следующем кадре писал опять onEnterFrame и оставлял в скобках { } пустое место.
Извращаюсь всяко разно :)

aQuestion
09.09.2007, 00:48
почему бы вместо http://www.pitelino.ru/images/img_masterpage/binary_001.jpg не прописать, собственно, swf?

this.create
09.09.2007, 00:53
Это к тому, что я писал в кадре onEnterFrame, а потом, чтобы прекратить его выполнение, в следующем кадре писал опять onEnterFrame и оставлял в скобках { } пустое место.
Извращаюсь всяко разно :) То же самое:
delete this.onEnterFrame this.onEnterFrame=null Вобщем привязываете пустую функцию к событию (а вы это и делаете как я понял).

Mr. Fixit
09.09.2007, 01:08
в 1: onEnterFrame - убивается(delete)
в 2: onEnterFrame - присваивается пропущенное значение(null)
Разве это одно и то же?

this.create
09.09.2007, 01:14
onEnterFrame это событие класса MovieClip. Оно рассылается слушателям каждый кадр клипа. Если к этому событию привязана функция, то каждый кадр будут выполняться действия описанные в этой функции. Соответственно чтобы избавиться от этой функции все эти способы годятся.

etc
09.09.2007, 01:50
this.create, лучше использовать delete.

Mr. Fixit
09.09.2007, 01:52
на первый взгляд delete лучше, но на самом деле разницы нету получается.
Или я не прав?

etc
09.09.2007, 01:57
на первый взгляд delete лучше, но на самом деле разницы нету получается.
Или я не прав?
Было когда-то тестирование, в общем, delete сразу удаляет все и делает отписку, а null нет. Сейчас ставить эксперименты не имеет смысла. Можно null, можно delete. Лично я использую исключительно delete.

Mr. Fixit
09.09.2007, 02:08
мне лично надежнее видеть delete
как и в цикле for(..., ..., i += 1), а не i++.

Kikasso
09.09.2007, 02:58
По аналогии:
mc.onPress = function(){trace('hi')};
mc.onPress = null; // лапка осталась, хотя ничего не делается
delete mc.onPress; // лапки нет