|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Jan 2007
Сообщений: 302
|
Добавление двох кнопок в контейнер - добавляется только одна :(
Прошу сильно не ругать за такой код, я только учусь...
Хотел бы попросить, если у кого-то есть минутка чуток оптимизировать его... Мне нужно создать две одинаковые кнопки, но с разными именами и размещением Подскажите как оптимизировать код на создание нескольких кнопок с разными именами и размещением, но с одинаковым поведением - пробовал вызывать функцию из мейн класса и передавать ей параметры, че т не получилось.. Делаю это таким "макаром" buttons.as package{ import flash.display.*; import flash.events.*; import flash.geom.*; import flash.text.*; public class buttons extends Sprite { public var b:SimpleButton = new SimpleButton(); public var btn1:SimpleButton = new SimpleButton(); public var btn2:SimpleButton = new SimpleButton(); public function buttons () { b.upState = createRect(0x999999,1.0); b.overState = createRect(0x999980,1.0); b.downState = createRect(0x9999980,0.95); b.hitTestState = b.upState; trace("dsfsdssssss"); Next(); Prev(); } function createRect(color:uint,alph:Number) { var shape:Shape = new Shape(); shape.graphics.beginFill(color,alph); shape.graphics.drawRoundRect(0,0,80,25,20,20); shape.graphics.endFill(); return shape; } function Prev(){ var lab:TextField = new TextField(); btn1=b; btn1.x = 10; btn1.y = 320; trace("prev"); lab.width = 50; lab.text = "They call"; lab.x = 10; trace("next"); lab.y = 320; addChild(btn1); addChild(lab); } function Next(){ btn2=b; btn2.x = 100; btn2.y = 100; trace("next"); addChild(btn2); } } } main.as добавляет только next кнопку, лейбл не добавляет и не добавляет prev кнопку. |
|
|||||
Регистрация: Aug 2008
Адрес: Рязань
Сообщений: 723
|
напишите класс кнопки Button
в нем вы рисуете кнопку, текстовое поле и требуемые методы для ее поведения(поменять состояние при over/out) в основном классе создаете новый экземпляр класса Button, и только тут указываете его координаты, имя здесь же задаете btn1.name = 'btn1'...
__________________
low + |
|
|||||
Регистрация: Jan 2007
Сообщений: 302
|
Методы для поведения (поменять состояние при over/out) тоже в основном классе?
Тоисть этот код должен находится в мейн? public function buttons () { b.upState = createRect(0x999999,1.0); b.overState = createRect(0x999980,1.0); b.downState = createRect(0x9999980,0.95); b.hitTestState = b.upState; trace("dsfsdssssss"); Next(); Prev(); } function Prev(){ var lab:TextField = new TextField(); btn1=b; btn1.x = 10; btn1.y = 320; trace("prev"); lab.width = 50; lab.text = "They call"; lab.x = 10; trace("next"); lab.y = 320; addChild(btn1); addChild(lab); } function Next(){ btn2=b; btn2.x = 100; btn2.y = 100; trace("next"); addChild(btn2); } |
|
|||||
Регистрация: Aug 2008
Адрес: Рязань
Сообщений: 723
|
вот что я имел в виду
основной класс package { import flash.display.Sprite; import flash.events.Event; /** * ... * @author Jewelz */ public class Main extends Sprite { public function Main():void { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); // entry point var btn1:Button = new Button('Кнопка 1'); btn1.name = 'btn1'; btn1.x = 100; btn1.y = 100; var btn2:Button = new Button('Кнопка 2'); btn2.name = 'btn2'; btn2.x = 250; btn2.y = 100; addChild(btn1); addChild(btn2); } } } package { import flash.display.Sprite; import flash.events.MouseEvent; import flash.text.TextField; /** * ... * @author Jewelz */ public class Button extends Sprite { private var labelFld:TextField; public function Button(label:String) { labelFld = new TextField(); labelFld.selectable = false; labelFld.width = 80; labelFld.height = 20; labelFld.x = 10; labelFld.y = 0; labelFld.text = label; addChild(labelFld); addEventListener(MouseEvent.ROLL_OVER, onOver); addEventListener(MouseEvent.ROLL_OUT, onOut); onOut(null); } private function onOut(e:MouseEvent):void { this.graphics.clear(); this.graphics.beginFill(0xff0000); this.graphics.drawRoundRect(0, 0, 100, 20, 10, 10); this.graphics.endFill(); } private function onOver(e:MouseEvent):void { this.graphics.clear(); this.graphics.beginFill(0xffff00); this.graphics.drawRoundRect(0, 0, 100, 20, 10, 10); this.graphics.endFill(); } } }
__________________
low + |
|
|||||
Регистрация: Jan 2007
Сообщений: 302
|
Понятненьео, приблизительно так я себе и думал..
Спасибо. Постал еще один вопрос. А лучше, удобней, писать состояния кнопки функциями? Ведь у класса SimpleButton есть свойства upState,overState и так д.. был бы благодарен, если б смогли в двух словах обьяснить этот кусочек кода... чуток не понямаю... |
|
|||||
Регистрация: Aug 2008
Адрес: Рязань
Сообщений: 723
|
тут ждем пока флешка загрузится, то есть когда появится stage
если используете SimpleButton то думаю логично использовать его готовые методы, но советую позже написать свой класс
__________________
low + |
|
|||||
Регистрация: Jan 2007
Сообщений: 302
|
Цитата:
Я прошу подсказать как начинать писать КОД правильно!?, чтоб он был расшыряемым и так д... |
|
|||||
Регистрация: Aug 2008
Адрес: Рязань
Сообщений: 723
|
понять так, что если хотите чему то научиться, то надо пытаться сделать самому, а не использовать готовое решение, класс обычной кнопки это как раз то, с чего можно начать пример я вам привел, все зависит от ваших конкретных целей если класс не final то его можно расширить
__________________
low + |
|
|||||
Регистрация: Mar 2008
Адрес: Ростов-на-Дону
Сообщений: 354
|
Цитата:
Killer_13, это я вам Здесь вам вряд ли кто-то станет подробно такие вещи излагать, это не формат форума. Почитайте литературу, и обязательно попробуйте написать что-то своё. А потом отнаследуйтесь от него, и постарайтесь изменить поведение базового класса. После написания десятка-другого своих классов всё станет намного понятнее. Ибо умение, как вы говорите, писать код правильно, приходит только с опытом. Одних теоретических знаний тут недостаточно. Я бы даже сказал, это умение не приходит никогда. Но ведь возможность в любой момент научиться чему-то новому – это ведь здорово, правда? =) Последний раз редактировалось SamFR; 05.12.2009 в 16:26. |
|
|||||
Регистрация: Jan 2007
Сообщений: 302
|
Правда.
Сечас читаю, - учусь по книгам Лотт, Шалл, Питерс - Сборник рецептов ActionScript 3.0 Колин Мук - ActionScript 3.0 flash_as3_programming.pdf flash_as3_components_help.pdf flash_cs4_help.pdf Может еще кто подскажет интересные статьи и литературу о AS 3 ... Знаю, что чуток не в тему вопроса, - но все же.. |
Часовой пояс GMT +4, время: 17:32. |
|
« Предыдущая тема | Следующая тема » |
|
|