|
|
|||||
стервочка (я мужик)
|
> import в AS3 работает именно как импорт, т.е. зашивает всё-таки классы.
Враньё он делает их видимыми ничего он не зашивает. проверял. неиспользуемые классы он не зашивал. >> (зачем такая сложность?) >этот вопрос меня тоже беспокоит тут всё проще у тя могут быть 2 класса с одинаковыми названиями, в разных пакетах. Практика конечно плохая, но впринципе может быть такая ситуация. |
|
|||||
4AM Games
|
Цитата:
И случаются совпадения в именах классах, можно конечно переименовать, но зачем придумывать глупые префиксы\постфиксы когда можно просто написать импорт. Хотя фасадным* классам, конечно стоит пытатся всегда придумывать уникальные имена. С утилитарными\внутреними классами фасады можно не церемонится. *Фасадный класс - объединяющий интерфейс нескольких классов для централизованного доступа, получается этакая инкапсуляция пакета или даже целой библиотеки.
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^ |
|
|||||
поидее пакет package может содержать в себе несколько классов, однако у меня что то не получилось. Я пытаюсь делать так:
есть text.fla и там в Document class прописываю parseXML содержимое parseXML.as: package { import flash.display.MovieClip; import flash.events.*; public class parseXML extends MovieClip { public function parseXML () { trace ("привет"); } } class ListItem { public function ListItem () { trace ("хай!"); } } 5006: An ActionScript file can not have more than one externally visible definition: parseXML, ListItem как правильно делать? |
|
|||||
[+1 18.03.08]
Регистрация: Nov 2006
Сообщений: 223
|
Один файл не может содержать два (и более) публичных класса.
Т.е. вообще несколько классов в один файл записать можно. Но из-за пределов файла должен быть видим только один. Вариант 1. Каждый класс - в отдельный файл. Это если обязательно надо сделать два или более публичных классов. Вариант 2. Одному классу пишешь public, всем остальным - private Это если дополнительные классы нужны только для внутренней реализации и никому больше знать про них не надо. В твоём случае, насколько я понимаю, лучше первый вариант, так как ты наверняка захочешь обратиться ListItem где-то ещё. |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
См. директиву internal.
|
|
|||||
пытаюсь делать как вы советуете - но что то не получается. Вот 2 способа в одном
test.fla = пишу "Parse" содержимое Parse.as: package { import flash.display.*; //import flash.events.*; //import flash.net.*; //import flash.text.*; import ListItem; public class Parse extends MovieClip { public function Parse() { var vv:ListItem = new ListItem(); } } private class Item { public function Item () { trace ("хай!"); } } } package { import flash.display.*; import flash.events.*; import flash.text.*; public class ListItem extends MovieClip { public function ListItem () { trace ("класс подцепился"); // создаю текстфилд var formatter:TextFormat = new TextFormat(); formatter.font = "Comic Sans MS"; formatter.size = 14; var field:TextField = new TextField(); field.selectable = false; field.embedFonts = true; field.defaultTextFormat = formatter; field.setTextFormat(formatter); field.text = "Matchiupichiu66666666666"; field.autoSize = TextFieldAutoSize.LEFT; field.x = 10; field.y = 10; addChild(field); trace (field); } } } и пишет 1013: The private attribute may be used only on class property definitions. если его закоментировать то ругаться перестаёт и вроде даже как цепляет второй класс.. однако текстфилд почему то не создаётся Ой т.е. текстфилд создаётся но я его не вижу почему то. Последний раз редактировалось DRAGOnoid; 20.07.2007 в 17:08. |
|
|||||
такс, вторую ошибку решил - надо было просто догадаться передавать место куда addChild делать . Что-то типа этого
но второй класс в общий пакет так и не получилось вставить |
|
|||||
решил проблему сам. просто надо было внимательней смотреть на пример
http://flasher.ru/forum/showpost.php...17&postcount=8 есть пакет есть главный класс в этом пакете.. ОСТАЛЬНЫЕ КЛАССЫ ПИСАТЬ ВНЕ ПАКЕТА! (т.е. после "package {}") - вот в чём я стормозил... =) |
|
|||||
подскажите пожалуйста если кто может ещё такую вещь, или совет дайте. А то совсем запутался.
Я хочу сделать свой класс прелоадер например и програмно в нём рисовать все элемнты, загрузку, текст и т.д. так вот, я хотелбы сделать свой класс похожий на MovieClip, то есть чтобы можно было менять координаты, давать ссылки , но не как обычно вызовом метода а напрямую. Это возможно? package { import flash.display.*; public class Parse extends MovieClip { public function Parse() { var mc:Item = new Item(); addChild(mc); mc.x=100; } } } class Item { import flash.display.*; private var size:uint = 80; private var bgColor:uint = 0xFFCC00; private var borderColor:uint = 0x666666; private var borderSize:uint = 0; private var cornerRadius:uint = 9; private var gutter:uint = 5; public function Item ():MovieClip {//:void trace ("хай!"); var mc = doDrawCircle(); return mc; } // просто рисую круг (взят из примера) private function doDrawCircle():MovieClip { var mc:MovieClip = new MovieClip(); var halfSize:uint = Math.round(size / 2); var child:Shape = new Shape(); child.graphics.beginFill(bgColor); child.graphics.lineStyle(borderSize, borderColor); child.graphics.drawCircle(halfSize, halfSize, halfSize); child.graphics.endFill(); mc.addChild(child); return mc; } } |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
Конструктор класса не есть метод, возвращающий чего-либо.
Что помешало наследовать Item от MovieClip и рисовать всякую ботву прям в конструкторе? |
Часовой пояс GMT +4, время: 06:26. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|