Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как добавлять properties к мувикам? (http://www.flasher.ru/forum/showthread.php?t=127527)

NtM 15.07.2009 22:33

Как добавлять properties к мувикам?
 
Сразу извиняюсь за возможно дурацкие вопросы..не ругайте сильно.


вопрос номер раз:

есть у меня мувик на сцене. Назван "mc_test"
в AS2 если мне нужно было к нему прицепить какое-то свойство, я просто писала
Код:

_root.mc_test.prop1 = 'some value';
как это делается в AS3?

вопрос номер два:

есть у меня меню, состоящее из трех кнопок. Кликая на каждую кнопку должна показываться соответствующая карта.

1. создаю 3 кнопки, размещаю их на сцене: btn_item1, btn_item2, btn_item3.

По нажатию на каждую кнопку я показываю разные картинки....т.е. дейсвия одинаковые, а картинки разные.

2. создаю класс

Код AS3:

package main{
        public class Map extends Sprite {
            public function Map(map_url:String) {
                trace(map_url);
            }
        }
}

3. В Linkage btn_item1, btn_item2, btn_item3 ставлю галочку «Export for ActionScript», класс main.Map. Как теперь в конструктор класса Мар передать параметр?

спасибо!

willis83 15.07.2009 22:51

класс должен быть dynamic чтобы к нему можно было прикручивать свойства в рантайме.

NtM 15.07.2009 23:04

угу.....
willis83, это был ответ к первому вопросу? т.е. класс MovieClip - не динамический чтоли? а как его сделать динамическим?

Alex Lexcuk 16.07.2009 00:00

>>т.е. класс MovieClip - не динамический чтоли? а как его сделать динамическим?
Мувиклип динамический. Свойства можно добавить так
Код AS3:

mc["новоеCвойство"] = new MovieClip();
// Как теперь в конструктор класса Мар передать параметр?
//при создании экземпляра класса
mc["новоеКарта"] = new Map("Бельгия");
//потом обращаться к динамическим свойствам
mc.addChild(mc["новоеКарта"]);


willis83 16.07.2009 00:20

AlexLexcuk, Ваш код я категорически не понимаю.
Динамическое свойства классу присваивается так:
Код AS3:

var myclass:Class1 = new Class1;
myclass.prop1 = "new prop1";

Class1 должен быть определён как dynamic и объявления свойства prop1 в нём не обязательно.
На счёт динамический ли класс MovieClip ничего сказать не могу, т.к. не использую его. Проверять в лом. Это кстати не долго вам проверить.

NtM 16.07.2009 02:49

спасибо большое за ответы!

1. почему когда я пишу mc_test.prop1 = 'test' я получаю ошибку?

"ReferenceError: Error #1056: Cannot create property prop1 on flash.display.SimpleButton.
at main::maps$iinit()"


mc_test - это кнопка.


2. я не поняла про конструктор.

если я создаю объект класса следующим образом:

Код AS3:

 var Obj1:Map;
Obj1= new Map("param01");

тогда понятно, что можно передать параметр в конструктор.

Но если я прописываю класс для мувика в Library в Symbol Properties (свойство "Class"),
то там я могу только написать имя класса, без параметров для конструктора.
А если параметр передать нужно?

marat_sa 16.07.2009 09:25

1) SimpleButton - класс не динамический, он ругается, потому что не может найти в себе свойство prop1.
Самый оптимальный вариант - расширяйте SimpleButton и объявляйте в нем prop1. Или какое-нибудь свойство parameters - Object, куда сможете записывать динамические переменные.

2) Параметр передается уже при создании конкретного экземпляра вашего класса, то есть при вызове конструктора класса.
А в библиотеке просто имя класса пишите. (без скобочек "()") =)


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

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