|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
[+1 16.02.09]
[++1 16.02.09] Регистрация: Jan 2009
Сообщений: 41
|
1) Это я про себя говорю)))
2) Дак а брать где их? http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/ -от сюда? Дак тут я невижу ЭнтерФрэйма никакого. 3) Почему "например"? или там их тьма свойств? Откуда тогда достать синтаксис вызова свойств? |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
2) Лучше искать нужно
3) Там же, в хелпе. Читайте. Вам повезло — на русском. |
|
|||||
[+1 16.02.09]
[++1 16.02.09] Регистрация: Jan 2009
Сообщений: 41
|
2) Нау..чите(чи)
Вот и получилась Убывающая последовательность из вопросов) Добавлено через 8 минут А вот всетаки в догонку пара вопросиков) 1) В АС2 писали имя переменных и мувиклипов как _root["blabla"+i+"_bla_"+j]. Как данное творение реализовать на flash? илиже только через массивы??? 2) Какой истенный синтаксис создания мувиклипа на сцене и присваивание ему какогото имени?? Токо ненадо плс, посылать на хэлп)) я уже долго разбираюсь просто уже каша какаято в мозгах получилась, незнаю что из этого что надо выцеплять. Последний раз редактировалось ZlobaZl; 18.01.2009 в 01:35. |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
Цитата:
Цитата:
var sp:Sprite = new Sprite(); sp.name = 'mySprite'; super.addChild(sp); var mySprite:Sprite = super.getChildByName('mySprite') as Sprite; trace(mySprite, mySprite.name); |
|
|||||
[+1 16.02.09]
[++1 16.02.09] Регистрация: Jan 2009
Сообщений: 41
|
1)
Цитата:
2) Цитата:
3)"super" это ненче нам привычный рут так обозначается?))) А как код будет выгледеть если нам надо созать 10 мувиклипов? зы. "ENTER_FRAME Константа " "Примечание. Это событие не имеет фазы захвата и фазы пузырей, поэтому отправляется непосредственно целевому элементу независимо от того, находится он в списке отображения или нет." Боже мой что за пузыри???))) Добавлено через 2 минуты Кстате из файла по этой теме: что тут тогда "stage." означает? Последний раз редактировалось ZlobaZl; 18.01.2009 в 01:57. |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
По имени константы можно найти кучу классов, которые событие с такой константой высылают.
Цитата:
Нет, super точно такой же super, как и в AS2. Это обращение к супер-классу, либо его свойствам/методам, либо выполнение конструктора. Рано или поздно вы его сами напишите. Мне — лень. Не забивайте голову, вам до этого ещё далеко. Когда разберетесь с моделью дисплей-объектов в AS3, этот вопрос отпадёт сам собой. Т. к. обычно в подобных дискуссиях количество вопросов возврастает в геометрической прогрессии, я рекомендую вам всё же читать и понимать хелп и искать ответы здесь на форуме самостоятельно, потому как лично я писать километровые посты не хочу и лень. |
|
|||||
[+1 16.02.09]
[++1 16.02.09] Регистрация: Jan 2009
Сообщений: 41
|
Ну лана небуду пока тревожить)))
Добавлено через 22 часа 27 минут Вот ещё вопросик. Иду по коду предложенной игры и сотавляю свой. package main{ import flash.display.MovieClip; import flash.display.DisplayObject; import flash.events.Event; import main.*; dynamic public class GameAs3Class_Robots_World extends MovieClip {; public var all_moving:Array; public function GameAs3Class_Robots_World() { all_moving = new Array(); addEventListener(Event.ENTER_FRAME, Update); } public function DropSeveralAsteroids():void { var cnt, i, Type1, Type2, Type3 :Number; var new_BFR:GameAs3Class_Robots_Soldat; cnt=10; for (i=1; i<=cnt; i++) { Type1=Math.floor(Math.random()*2)+1; Type2=Math.floor(Math.random()*3)+1; Type3=Math.floor(Math.random()*2)+1; new_BFR = new GameAs3Class_Robots_Soldat(); addChild(new_BFR); all_moving.push(new_BFR); new_BFR.drop(1) } } public function Update(e : Event):void { DropSeveralAsteroids() this.x=super.stage.mouseX-300; this.y=super.stage.mouseY-300; for each (var obj:GameAs3Class_Robots_Soldat in all_moving) { obj.move() } } } } package main{ import flash.display.MovieClip; import flash.display.DisplayObject; import flash.events.Event; import main.*; dynamic public class GameAs3Class_Robots_Soldat extends MovieClip{; public function GameAs3Class_Robots_Soldat() { } public function move():void { x += 10; y += 10; } public function drop(Type1:Number):void { if(Type1==1){ x=20; y=300; } if(Type1==2){ x=300; y=20; } } } } Моеё целью должно быть чтобы в классе "GameAs3Class_Robots_World" вызывались 2 функции move() и drop(Type1:Number). Но при их вызове вылезает данная ошибка: TypeError: Error #1006: drop is not a function. at main::GameAs3Class_Robots_World/DropSeveralAsteroids() at main::GameAs3Class_Robots_World/Update() Что помойму означает что нет данной функции в DropSeveralAsteroids() нет и в Update(). Хотя в примере именно так все реализованно. Для функции мува таже самая ошибка. 2) Второй вопрос. Когда нам надо писать что "GameAs3Class_Robots_World extends MovieClip", а когда" GameAs3Class_Robots_World extends GameAs3Class_Robots_World_02" Как я понял это и есть наследование (вопрос "3)" Это наследование или что???) либо от мувиклипов на сцене либо от кода, потипу продолжения чтоли? или если я непонял что это такое то можете (кто нибудь) объяснить что да как? 4) Как я еще понял мы записываем all_moving = new Array(); поочередно не просто какую то переменную, а целый "блок данных" включающий себя направление на выполнение каких либо функций а потом просто перебирай все по очереди в результате чего "блок данных" у нас начинает выполняться для каждого объекта (вопрос "5)" это бред как я понял либо это реально так?). В результате чего нам ненада индексировать никакие объекты по 100 раз. Вот возникает вопрос (все ещё четвертый) а чето я непонял как колизия (столкновение) проверяется исходя из двух объектов??? Как надо вызывать их??? зы не в тему "Добавлено через 22 часа 27 минут" порадовало) Последний раз редактировалось ZlobaZl; 19.01.2009 в 00:42. |
|
|||||
Регистрация: Oct 2003
Адрес: Москва
Сообщений: 328
|
1. В коде все верно. Ошибка "drop is not a function" скорее всего из-за того, что в библиотеке есть мувиклип с Class: GameAs3Class_Robots_Soldat, и создается экземпляр именно этого мувиклипа, который не имеет никакого отношения к написанному вами классу main.GameAs3Class_Robots_Soldat
Укажите в свойствах мувиклипа Class: main.GameAs3Class_Robots_Soldat и все заработает. На будущее, когда ручками пишите имя класса, связанного с мувиклипом, нажимайте на зеленую галочку справа от поля ввода, Flash сообщит вам связанно ли указанное имя с существующим классом, или же будет создан новый. 2. да, это наследование. Лучше, конечно про наследование почитать умные книжки, но я попробую на пальцах Что писать после extends зависит от того, какие свойства должны быть у вашего класса изначально (от родителя). Если классу не нужно ничего, например, он просто хранит "x" координату, то и наследоваться не надо: Если надо еще один класс, который хранит две координаты "x" и "y" можно аналогично создать класс и прописать в нем две координаты, а можно унаследоваться от уже имеющегося: Новый класс MyClass2 имеет два числа "y" - прописанное в нем, и "x" - полученное от родителя MyClass1. Т.е. по сути класс MyClass2 расширяет функционал класса MyClass1. Когда вы пишете "GameAs3Class_Robots_World extends MovieClip", то создаете свой новый класс, который наследует все свойства мувиклипа: может содержать в себе рисунок, несколько кадров, анимацию и целую кучу других полезных свойств: http://help.adobe.com/ru_RU/AS3LCR/F...MovieClip.html Т.е. как бы говорите: "ок, я беру за основу мувиклип и добавлю туда кое что свое", в вашем случае это функция для перемещения function move() и функция для установки начальных координат function drop 4. all_moving - это массив. В каждой ячейке массива можно хранить что-то. (благодаря заботам разработчиков Flash, массивы нетипиризированные, т.е. за счет некоторого снижения производительности можно в любой ячейке хранить все что угодно!) Вы в этот массив сохраняете ссылки на созданные экзепляры классов GameAs3Class_Robots_Soldat. Вас ведь не смущает код: var new_BFR:GameAs3Class_Robots_Soldat; new_BFR = new GameAs3Class_Robots_Soldat(); new_BFR.drop(1); P.S. Все вышеописанное имеет мало отношения к AS3, а больше к основам программирования. Советую вам сначала почитать книги по программированию вообще. |
|
|||||
[+1 16.02.09]
[++1 16.02.09] Регистрация: Jan 2009
Сообщений: 41
|
2) Отлично. Получается что мы разными классами описываем разные свойства разных объектов, а потом как в конструкторе собираем мир из свойств. На примере игры ты взял сначало описал поведение в целом объектов (столкновение, а также вывод жизней) в классе basic_object, затем наши "кругляшки" делятся на движемое и недвижемое имущество (двигаются астеройды, не двигается земля) но всеже они такие базовые объекты изза чего ты создал 2 класса moveing_object and static_object. ну и т.д. в итоге потом после уноследования нада "скрепить" базик со статиком и базик с мувингом. Но тогда как реализовать уноследование сразу от 2х классов???
4) хм тоесть реально реализовать потипу так: for each (var obj:GameAs3Class_Robots_Soldat in all_moving) { for each (var obj2:GameAs3Class_Robots_Soldat in all_moving) { obj.stolknovenie(obj2) } } ... class .. GameAs3Class_Robots_Soldat .. ... stolknovenie(var obj2:GameAs3Class_Robots_Soldat ){ if(obj!=obj2 && stolknovenie_ne_izbejno){ blabla } } дак вот интересно реально так будет работать? Или в каких местах нада чуть подправить (например "obj!=obj2" корректно?)? зы и в догонку. all_moving.push(new_BFR) - означает дописывание в конец массива? или в любую пустую??? Добавлено через 22 часа 55 минут Дак что скажете? |
|
|||||
Регистрация: Oct 2003
Адрес: Москва
Сообщений: 328
|
> 2. Но тогда как реализовать уноследование сразу от 2х классов???
Во флеше - никак. И мне, к примеру, ни разу не потребовалось. Если очень надо, то посмотрите метод Proxy, но это уже дебри, лучше подумать еще и отказаться от множественного наследования 4. Можно и так. Только получается избыточно. Если было проверено столкновение obj1 с obj2 зачем еще делать проверку столкновения obj2 с obj1 ? > all_moving.push(new_BFR) - означает дописывание в конец массива? в конец |
Часовой пояс GMT +4, время: 09:30. |
|
« Предыдущая тема | Следующая тема » |
|
|