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

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

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

Регистрация: Jun 2006
Сообщений: 60
По умолчанию ООП передача параметра

Здравствуйте!
В библиотеке есть символ с именем "_hello", он определен как наследник класса My_class.
Итак код фильма
Код:
 _root.attachMovie('_hello','_hello',1)
код класса
Код:
class My_class extends MovieClip{
   public function My_class(_param:Number) {
	trace(_param+" hello world")		
   }
}
Вопрос: как передать в конструктор параметр "_param"?

Старый 04.09.2008, 01:25
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 2  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Поскольку вы никогда явно конструктор MovieClip'a не вызываете, то передать в него аргументы вы тоже не сможете. Выходом может быть класс-фабрика, который будет это делать примерно так:
[не рабочий код]
Код:
ClipFactory.createClassObject(parent, "linkage", TheClass, {argument, argument...}):MovieClip
{
var clip:MovieClip = parent.attachMovie("linkage", "linkage", parent.getNextHighestDepth(), {argument, argument...});
Object.registerClass(clip, TheClass);
return clip;
}
При условии, что в конструкторе вы ничего не передаете, а argument соответствует какому-нибудь полю в классе TheClass.
__________________
Hell is the possibility of sanity

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

Регистрация: Sep 2002
Сообщений: 30,787
В конструктор — никак. Но у attachMovie есть четвертый аргумент.

Старый 04.09.2008, 01:32
Mnilionic вне форума Посмотреть профиль Отправить личное сообщение для Mnilionic Найти все сообщения от Mnilionic
  № 4  
Ответить с цитированием
Mnilionic
 
Аватар для Mnilionic

Регистрация: Aug 2005
Адрес: я из Ленинграда
Сообщений: 1,082
Отправить сообщение для Mnilionic с помощью ICQ
Код:
_root.attachMovie('_hello','_hello',1, {_param: 'Mnilionic'});
Код:
class My_class extends MovieClip{
	var _param;
   public function My_class() {
	trace(_param+", hello world")
   }
}

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

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Код:
var myClass:MyClass = this.attachMovie("myClass", "myClass", this.getNextHighestDepth(), { myVar: "asdf" });
Код:
class MyClass extends MovieClip
{
	
	private var _myVar:String;
	
	public function MyClass()
	{
		trace(_myVar);
	}
	
	public function get myVar():String
	{
		return _myVar;
	}
	
	public function set myVar(value:String):Void
	{
		_myVar = value;
	}
	
}

Старый 04.09.2008, 01:49
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 6  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Код:
class ClipFactory
{
	public static function createClassObject(parent:MovieClip, 
							linkage:String, 
							classAlias:Function, 
							initArguments:Object):MovieClip
	{
		var b:Boolean = Object.registerClass(linkage, classAlias);
		var clip:MovieClip = parent.attachMovie(linkage, linkage,
							parent.getNextHighestDepth(),
							initArguments);
		trace("called "+b);
		return clip;
	}
}
Код:
class Foo extends MovieClip
{
	public var test:String;
	
	public function Foo(){ trace("foo constructor: " + test); };
	
	public function traceTest():Void
	{
		trace(test);
	}
	
	public function toString():String { return "Foo"; };
}
Код:
import ClipFactory;
import Foo;
var foo:Foo = Foo(ClipFactory.createClassObject(this, "aaa", Foo, {test:"abcd"}));
trace(foo.toString())
foo.traceTest();
рабочий вариант =)
переменная была определена до выполнения конструктора, фактически то же самое, что и определить ее во время выполнения конструктора =)
__________________
Hell is the possibility of sanity


Последний раз редактировалось wvxvw; 04.09.2008 в 01:51.
Старый 04.09.2008, 17:45
ktotam вне форума Посмотреть профиль Отправить личное сообщение для ktotam Найти все сообщения от ktotam
  № 7  
Ответить с цитированием
ktotam
 
Аватар для ktotam

Регистрация: Jun 2006
Сообщений: 60
Всем большое спасибо!
Выбрал вариант Mnilionic.
__________________
kto™

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

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

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


 


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


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