Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0 > Статьи

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 18.01.2009, 00:49
ZlobaZl вне форума Посмотреть профиль Отправить личное сообщение для ZlobaZl Найти все сообщения от ZlobaZl
  № 161  
Ответить с цитированием
ZlobaZl
[+1 16.02.09]
[++1 16.02.09]

Регистрация: Jan 2009
Сообщений: 41
1) Это я про себя говорю)))
2) Дак а брать где их? http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/ -от сюда? Дак тут я невижу ЭнтерФрэйма никакого.
3) Почему "например"? или там их тьма свойств? Откуда тогда достать синтаксис вызова свойств?

Старый 18.01.2009, 01:09
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 162  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
2) Лучше искать нужно
3) Там же, в хелпе. Читайте. Вам повезло — на русском.

Старый 18.01.2009, 01:21
ZlobaZl вне форума Посмотреть профиль Отправить личное сообщение для ZlobaZl Найти все сообщения от ZlobaZl
  № 163  
Ответить с цитированием
ZlobaZl
[+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.
Старый 18.01.2009, 01:37
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 164  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Цитата:
Сообщение от ZlobaZl Посмотреть сообщение
2) Нау..чите(чи)


Цитата:
Сообщение от ZlobaZl Посмотреть сообщение
В АС2 писали имя переменных и мувиклипов как _root["blabla"+i+"_bla_"+j]. Как данное творение реализовать на flash? илиже только через массивы???
По ссылкам или getChildByName.

Цитата:
Сообщение от ZlobaZl Посмотреть сообщение
2) Какой истенный синтаксис создания мувиклипа на сцене и присваивание ему какогото имени??
Код AS3:
var sp:Sprite = new Sprite();
sp.name = 'mySprite';
super.addChild(sp);
var mySprite:Sprite = super.getChildByName('mySprite') as Sprite;
trace(mySprite, mySprite.name);
Цитата:
Сообщение от ZlobaZl Посмотреть сообщение
Токо ненадо плс, посылать на хэлп)) я уже долго разбираюсь просто уже каша какаято в мозгах получилась, незнаю что из этого что надо выцеплять.
А придётся, я не вечный.

Старый 18.01.2009, 01:52
ZlobaZl вне форума Посмотреть профиль Отправить личное сообщение для ZlobaZl Найти все сообщения от ZlobaZl
  № 165  
Ответить с цитированием
ZlobaZl
[+1 16.02.09]
[++1 16.02.09]

Регистрация: Jan 2009
Сообщений: 41
1)
Цитата:
КАРТИНКА
Дак откуда понятьчто данное делает???

2)
Цитата:
По ссылкам или getChildByName.
Не я не про то кажись. Чето типа this.per[i] так можно писать??? или это и означает что нада создать массив per

3)"super" это ненче нам привычный рут так обозначается?)))
А как код будет выгледеть если нам надо созать 10 мувиклипов?

зы.
"ENTER_FRAME Константа "
"Примечание. Это событие не имеет фазы захвата и фазы пузырей, поэтому отправляется непосредственно целевому элементу независимо от того, находится он в списке отображения или нет."

Боже мой что за пузыри???)))

Добавлено через 2 минуты
Кстате из файла по этой теме:
Код AS3:
// При выходе мышки за пределы флешки, делать тоже самое, что и при отпускании кнопки
stage.addEventListener(Event.MOUSE_LEAVE, handleMouseUp);
что тут тогда "stage." означает?


Последний раз редактировалось ZlobaZl; 18.01.2009 в 01:57.
Старый 18.01.2009, 02:04
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 166  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Цитата:
Сообщение от ZlobaZl Посмотреть сообщение
1) Дак откуда понятьчто данное делает???
По имени константы можно найти кучу классов, которые событие с такой константой высылают.

Цитата:
Сообщение от ZlobaZl Посмотреть сообщение
2) Не я не про то кажись. Чето типа this.per[i] так можно писать??? или это и означает что нада создать массив per
Нет, нельзя.

Цитата:
Сообщение от ZlobaZl Посмотреть сообщение
3)"super" это ненче нам привычный рут так обозначается?)))
Нет, super точно такой же super, как и в AS2. Это обращение к супер-классу, либо его свойствам/методам, либо выполнение конструктора.

Цитата:
Сообщение от ZlobaZl Посмотреть сообщение
А как код будет выгледеть если нам надо созать 10 мувиклипов?
Рано или поздно вы его сами напишите. Мне — лень.

Цитата:
Сообщение от ZlobaZl Посмотреть сообщение
Боже мой что за пузыри???)))
Не забивайте голову, вам до этого ещё далеко.

Цитата:
Сообщение от ZlobaZl Посмотреть сообщение
что тут тогда "stage." означает?
Когда разберетесь с моделью дисплей-объектов в AS3, этот вопрос отпадёт сам собой.

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

Старый 18.01.2009, 02:13
ZlobaZl вне форума Посмотреть профиль Отправить личное сообщение для ZlobaZl Найти все сообщения от ZlobaZl
  № 167  
Ответить с цитированием
ZlobaZl
[+1 16.02.09]
[++1 16.02.09]

Регистрация: Jan 2009
Сообщений: 41
Ну лана небуду пока тревожить)))

Добавлено через 22 часа 27 минут
Вот ещё вопросик.

Иду по коду предложенной игры и сотавляю свой.

Код AS3:
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()
		}
	}
}
}
Это мой основной класс.

Код AS3:
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.
Старый 19.01.2009, 02:48
MerlinTwi вне форума Посмотреть профиль Отправить личное сообщение для MerlinTwi Посетить домашнюю страницу MerlinTwi Найти все сообщения от MerlinTwi
  № 168  
Ответить с цитированием
MerlinTwi
 
Аватар для MerlinTwi

Регистрация: 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" координату, то и наследоваться не надо:
Код:
	class MyClass1 {
		public var x:Number;
	}
Если надо еще один класс, который хранит две координаты "x" и "y" можно аналогично создать класс и прописать в нем две координаты, а можно унаследоваться от уже имеющегося:
Код:
	class MyClass2 extends MyClass1 {
		public var y:Number;
	}
Новый класс 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);
В переменную new_BFR вы записываете ссылку на созданный (new) экземпляр класса солдат. Точно так же и в массиве хранятся такие же ссылки, только их там много. Вот этот код будет аналогичен вышеописанному:
Код:
var ar:Array = new Array();
ar[0] = new GameAs3Class_Robots_Soldat();
ar[0].drop(1);

P.S. Все вышеописанное имеет мало отношения к AS3, а больше к основам программирования. Советую вам сначала почитать книги по программированию вообще.
__________________
Создатель: Бойцовский клуб | TimeZero | Sky2Fly
Я возьму сам.

Старый 19.01.2009, 04:09
ZlobaZl вне форума Посмотреть профиль Отправить личное сообщение для ZlobaZl Найти все сообщения от ZlobaZl
  № 169  
Ответить с цитированием
ZlobaZl
[+1 16.02.09]
[++1 16.02.09]

Регистрация: Jan 2009
Сообщений: 41
2) Отлично. Получается что мы разными классами описываем разные свойства разных объектов, а потом как в конструкторе собираем мир из свойств. На примере игры ты взял сначало описал поведение в целом объектов (столкновение, а также вывод жизней) в классе basic_object, затем наши "кругляшки" делятся на движемое и недвижемое имущество (двигаются астеройды, не двигается земля) но всеже они такие базовые объекты изза чего ты создал 2 класса moveing_object and static_object. ну и т.д. в итоге потом после уноследования нада "скрепить" базик со статиком и базик с мувингом. Но тогда как реализовать уноследование сразу от 2х классов???
4) хм тоесть реально реализовать потипу так:

Код AS3:
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
     }
}
тут я прокручиваю 2 массива и функцией в которую вносится второй объект, проверя нет ли столкновения с этим объектом.
дак вот интересно реально так будет работать? Или в каких местах нада чуть подправить (например "obj!=obj2" корректно?)?


зы и в догонку.
all_moving.push(new_BFR) - означает дописывание в конец массива? или в любую пустую???

Добавлено через 22 часа 55 минут
Дак что скажете?

Старый 21.01.2009, 13:23
MerlinTwi вне форума Посмотреть профиль Отправить личное сообщение для MerlinTwi Посетить домашнюю страницу MerlinTwi Найти все сообщения от MerlinTwi
  № 170  
Ответить с цитированием
MerlinTwi
 
Аватар для MerlinTwi

Регистрация: Oct 2003
Адрес: Москва
Сообщений: 328
> 2. Но тогда как реализовать уноследование сразу от 2х классов???
Во флеше - никак. И мне, к примеру, ни разу не потребовалось. Если очень надо, то посмотрите метод Proxy, но это уже дебри, лучше подумать еще и отказаться от множественного наследования

4. Можно и так. Только получается избыточно. Если было проверено столкновение obj1 с obj2 зачем еще делать проверку столкновения obj2 с obj1 ?

> all_moving.push(new_BFR) - означает дописывание в конец массива?
в конец
__________________
Создатель: Бойцовский клуб | TimeZero | Sky2Fly
Я возьму сам.

Создать новую тему Ответ Часовой пояс GMT +4, время: 17:36.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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