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

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 24.04.2010, 03:38
saikspaik вне форума Посмотреть профиль Отправить личное сообщение для saikspaik Найти все сообщения от saikspaik
  № 1  
Ответить с цитированием
saikspaik

Регистрация: Nov 2009
Сообщений: 300
По умолчанию Linkage. Создание класса с параметрами

У меня есть класс для движения объектов, и много объектов этого класса.
Нужно передать в конструктор класса, свойства, чтобы объекты двигались с разной скоростью. В коде это выглядело бы так:
Код AS3:
var myObject:MyClass = new MyClass(myVar);
Так вот, можно ли в окне linkagе передать этот параметр (myVar), классу?
Надеюсь понятно изложил


Последний раз редактировалось saikspaik; 24.04.2010 в 03:39. Причина: уточнение
Старый 24.04.2010, 03:46
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 2  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Если речь идет о linkage, значит объект является мувиклипом, а мувиклипы в AS1.0/2.0 не создаются при помощи оператора new.
В attachMovie() можно передавать объект для инициализации.

Старый 24.04.2010, 04:46
saikspaik вне форума Посмотреть профиль Отправить личное сообщение для saikspaik Найти все сообщения от saikspaik
  № 3  
Ответить с цитированием
saikspaik

Регистрация: Nov 2009
Сообщений: 300
Спасибо.
А в AS 3.0 дела обстоят иначе?
Про attachMovie() знаю, но он не подходит. Нужно чтобы на момент приаттачивания переменная уже уже была передана.
Из вариантов в голову приходит только создания общего класса и нескольких дочерних, которые полностью наследуют родителя, только меняют переменную скорости.

Старый 24.04.2010, 05:07
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 4  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Цитата:
А в AS 3.0 дела обстоят иначе?
Так как в вашем примере.
Цитата:
Про attachMovie() знаю, но он не подходит.
Переменная задается до вызова конструктора.

Старый 25.04.2010, 02:34
saikspaik вне форума Посмотреть профиль Отправить личное сообщение для saikspaik Найти все сообщения от saikspaik
  № 5  
Ответить с цитированием
saikspaik

Регистрация: Nov 2009
Сообщений: 300
Недопонял. В AS 3.0 в linkage тоже нельзя передать параметры?
И про attachMovie() тоже не ясно. Конструктор примерно такой:
Код AS3:
public function MyClass(someVar:Number):void {
     trace(someVar);
}
Мне нужно передать этот someVar

Старый 25.04.2010, 09:25
KiL33 вне форума Посмотреть профиль Отправить личное сообщение для KiL33 Найти все сообщения от KiL33
  № 6  
Ответить с цитированием
KiL33
 
Аватар для KiL33

Регистрация: Jul 2007
Адрес: Гражданин Российской Федерации
Сообщений: 1,122
Отправить сообщение для KiL33 с помощью ICQ
Вот так надо

Main
Код AS3:
package {
 
	import controls.ObjectControl;
 
	import flash.display.Sprite;
 
	public class Main extends Sprite {
 
		//CONSTRUCTOR
		public function Main() {
 
			init();
 
		}
		private function init():void {
 
			var object1:ObjectControl = new ObjectControl(10);
			addChild(object1);
 
			//Object2	
			var object2:ObjectControl = new ObjectControl(5);
			addChild(object2);
			object2.y = object1.height+10;
 
			//Object3	
			var object3:ObjectControl = new ObjectControl(1);
			addChild(object3);
			object3.y = object1.height + object2.y+10;
		}		
 
	}//class
}//package

Box(objects)
Код AS3:
package components {
 
	import flash.display.Sprite;
 
	public class Box extends Sprite {
 
		//CONSTRUCTOR
		public function Box() {
 
		init();
 
		}
	private function init():void {
 
		var sBox:Sprite = new Sprite();
		sBox.graphics.beginFill(0x000000);
		sBox.graphics.drawRect(0, 0, 30, 30);
		sBox.graphics.endFill();
		addChild(sBox); 
	}
 
	}//class
}//package

ObjectControl
Код AS3:
package controls {
 
	import components.Box;
 
	import flash.display.Sprite;
	import flash.events.Event;
 
	public class ObjectControl extends Sprite {
 
		private var aBox:Box;
		private var bBox:Box;
		private var sBox:Sprite;
		private var speedBox:uint;
 
		//CONSTRUCTOR
		public function ObjectControl(value:uint) {
 
			speedBox = value
			init(speedBox);
 
		}
 
		private function init(speedBox:uint):void {
			sBox = new Sprite();
			addChild(sBox);
 
			aBox =  new Box();
 
			sBox.addChild(aBox)
 
			addEventListener(Event.ENTER_FRAME, actionObject)
		}
 
		private function actionObject(e:Event):void {
 
			sBox.x += speedBox;
 
		}
 
	}//class
}//package
В майне нужно создавать объекты и передавать классу параметры скорости
//var object1:ObjectControl = new ObjectControl(здесь параметр который ты передаешь);

И посмотри ещё один мой пример
http://www.flasher.ru/forum/showthre...=138682&page=2
(пост №15)
думаю тебе будет полезен.

Старый 26.04.2010, 04:22
saikspaik вне форума Посмотреть профиль Отправить личное сообщение для saikspaik Найти все сообщения от saikspaik
  № 7  
Ответить с цитированием
saikspaik

Регистрация: Nov 2009
Сообщений: 300
Спасибо, но это тоже не подойдет.

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

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

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


 


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


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