![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Сделайте класс, который будет раздавать битмапы всем, а в кнопке напишите следующее:
package com.ui { import flash.display.Bitmap; import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.geom.ColorTransform; public class Button extends Sprite { private var _bitmap:Bitmap; private var _originalColorTransform:ColorTransform; private var _onClick:Function; public function Button(onClick:Function) { this._onClick = onClick; if (super.stage) this.init(); else super.addEventListener(Event.ADDED_TO_STAGE, this.init); } private function init(e:Event = null):void { _bitmap = Images.getImage(Images.BUTTON); super.addChild(_bitmap); super.addEventListener(MouseEvent.ROLL_OVER, colorTransformEnable); super.addEventListener(MouseEvent.CLICK, clickHandler); } private function clickHandler(e:MouseEvent):void { _onClick(); } private function colorTransformEnable(e:MouseEvent):void { _originalColorTransform = super.transform.colorTransform; var colorTransform:ColorTransform = new ColorTransform(_originalColorTransform.redMultiplier + 0.2, _originalColorTransform.greenMultiplier + 0.2, _originalColorTransform.blueMultiplier + 0.2); super.transform.colorTransform = colorTransform; super.removeEventListener(MouseEvent.ROLL_OVER, colorTransformEnable); super.addEventListener(MouseEvent.ROLL_OUT, colorTransformDisable); } private function colorTransformDisable(e:MouseEvent):void { super.transform.colorTransform = _originalColorTransform; super.removeEventListener(MouseEvent.ROLL_OUT, colorTransformDisable); super.addEventListener(MouseEvent.ROLL_OVER, colorTransformEnable); } } } Естественно, в коде - Пример получения битмапы. A Main типа такого: package { import flash.display.SimpleButton; import flash.display.Sprite; import flash.events.Event; public class Main extends Sprite { public function Main() { if (super.stage) this.init(); else super.addEventListener(Event.ADDED_TO_STAGE, this.init); } private function init(e:Event = null):void { var button:Button = new Button(clickHandler); button.x = (stage.stageWidth - button.width) / 2; button.y = (stage.stageHeight - button.height) / 2; addChild(button); } private function clickHandler():void { trace("button is clicked"); } } }
__________________
There is no thing in this world that is not simple. Последний раз редактировалось ZackMercury; 04.05.2014 в 17:49. |
|
|||||
|
2misha, cмотрите, у вас логическая ошибка получилась, там где вы создаёте кнопку. В вашу кнопку не добавляется ничего. Как и сказали выше, она у вас пустая. Почему же?
var button: Button = new Button; addChild(button.addButton(200, 200)); button.addEventListener(MouseEvent.CLICK, funButton); Здесь вы добавляете на сцену (а не в кнопку button) некий спрайт с картинкой. Ведь в методе addButton ясно видно, что он создаёт спрайт и возвращает его public function addButton(x: int, y: int): Sprite { var button: Bitmap; button = new Embed(); button.x = x; button.y = y; var sprite: Sprite = new Sprite(); sprite.addChild(button); return sprite; } ------------------------ Вам нужно либо добавить при создании кнопки на сцене либо в методе addButton не возвращать спрайт, а просто добавить его в кнопку там же ------------------------ Но вся эта схема получается запутанной. Вам действительно лучше использовать фабрику для создания кнопок (с помощью статических методов). |
|
|||||
|
Регистрация: Apr 2014
Сообщений: 97
|
samaha
Когда так сделал, вообще кнопка перестала отображаться. А когда так, то жалуется что функция не возвращается значение, ибо нет ретурна. |
|
|||||
|
В тот же класс кнопки можно прямо в конструктор передавать текст, который должен на кнопке отображаться.
Добавлено через 5 минут 2misha, да хватит уже всякую фигню писать! Пора бы уже задуматься над тем, что вам пишут и над тем, что пишите вы. Добавлено через 11 минут Скорее всего потому, что вы не добавляете в Main екземпляр класса Button(addChild(button)); Добавлено через 12 минут Ну естественно, у вас наверное тип возвращаемого значения установлен Sprite?
__________________
There is no thing in this world that is not simple. |
|
|||||
|
Регистрация: Apr 2014
Сообщений: 97
|
Да, Спрайт. Когда void поставил, тогда не работало тоже.
Добавлено через 2 минуты Добавляю. |
![]() |
![]() |
Часовой пояс GMT +4, время: 16:51. |
|
|
« Предыдущая тема | Следующая тема » |
|
|