|
|
|||||
Регистрация: Aug 2009
Сообщений: 38
|
Создание динамических кнопок
Здравствуйте. Создаю динамическую кнопку
//1 слой (рисунок кнопки) var column:columnClass = new columnClass(); column.x = 310; column.y = 60 + 35 * i; addChild(column); //2 слой - текст кнопки var txtField:TextField = new TextField(); txtField.textColor = 0xFFFFFF; txtField.htmlText = '<b>'+sortID+'.</b> '+vkID+''; txtField.x = 320; txtField.y = 65 + 35 *i; addChild(txtField); //3 слой подложка (прозрачный фон) var casper_column:casper_columnClass = new casper_columnClass(); casper_column.x = 310; casper_column.y = 60 + 35 * i; //casper_column.name = ''+vkID+''; addChild(casper_column).name = ''+vkID+''; |
|
|||||
Можно создать кнопку руками и указав ей Linkage описать её в отдельном классе. Так не придётся создавать каждый раз экземпляры подложки, текстФилда и прочего.
__________________
O God! The Aftermath. |
|
|||||
Регистрация: Aug 2009
Сообщений: 38
|
вот нашел что нужно
package { import flash.display.SimpleButton; import flash.display.Sprite; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.text.TextFormat; public class MyButton extends SimpleButton { public static const OVER_COLOR:uint = 0x999999; public static const UP_COLOR:uint = 0x666666; public static const DOWN_COLOR:uint = 0x886600; private var _label:String; public function MyButton(label:String):void { _label = label; downState = createSprite(DOWN_COLOR); overState = createSprite(OVER_COLOR); upState = createSprite(UP_COLOR); hitTestState = overState; } private function createSprite(color:uint):Sprite { var s:Sprite = new Sprite(); s.graphics.beginFill(color); s.graphics.drawRoundRect(0, 0, 100, 18, 10, 10); s.graphics.endFill(); var lab:TextField = createLabel(); lab.x = Math.round(s.width * .5 - lab.width * .5); lab.y = Math.round(s.height * .5 - lab.height * .5); s.addChild(lab); return s; } private function createLabel():TextField { var fmt:TextFormat = new TextFormat("_sans", 11); var tf:TextField = new TextField(); tf.selectable = false; tf.mouseEnabled = false; tf.autoSize = TextFieldAutoSize.LEFT; tf.defaultTextFormat = fmt; tf.text = _label; return tf; } } } import files.btnClass var btn:MyButton = new MyButton('text btn'); btn.x = 10; btn.y = 10; addChild(btn); Цитата:
Последний раз редактировалось Oli Short; 08.01.2010 в 01:11. Причина: грамотическая ошибка |
|
|||||
Регистрация: Aug 2009
Сообщений: 38
|
прошу прощения
имя класса и имя .as не совпадало. спасибо! |
|
|||||
Регистрация: Jan 2010
Сообщений: 25
|
Вопрос такой у меня есть кнопка (стандартная) в библиотеке. Я дал ей имя (BtMenu) также тексту тоже присвоил имя (caption) и хочу текст на кнопки менять из другого класса подскажите как это сделать?
|
|
|||||
В другом классе должна быть ссылка на это кнопку, создавайте её когда добавляете кнопку на сцену. Или, если вы добавили на сцену руками, то она будет доступна по instance name в классе-родителе.
__________________
O God! The Aftermath. |
|
|||||
Регистрация: Jan 2010
Сообщений: 25
|
Клас кнопки
package Src.buttons{ import flash.display.*; import flash.text.*; import flash.events.Event; public class btMenu extends flash.display.SimpleButton { public function btMenu() {// //trace("1 "); // (this['caption'] as TextField).text = "sd";_caption; } } } package Src{ import flash.display.*; import flash.events.Event; import flash.text.*; import Src.buttons.*; public class GameMenu extends Sprite { private var GameName:String; private var GameNameText:TextField; public var DisplayWidth:uint; public var DisplayHeight:uint; private var btPlay: btMenu; public function GameMenu() { DisplayWidth = 700;//stage.stageWidth; DisplayHeight = 525;//stage.stageHeight; GameName = "Game"; GameNameText = new TextField(); var format:TextFormat = new TextFormat(); format.font="Comic Sans MS"; format.size=50; GameNameText.defaultTextFormat=format; GameNameText.text = GameName; with (GameNameText) { textColor=0x99cc00; autoSize = TextFieldAutoSize.LEFT; selectable = false; x=(DisplayWidth/2) - (textWidth/2); y=20; } btPlay = new btMenu(); btPlay.x = (DisplayWidth/2) - (btPlay.width/2); btPlay.y = 200; addChild(btPlay); addChild(GameNameText); } } } |
|
|||||
Классы следует называть с прописной.
Определите свойство btPlay как публичное. В любой другой класс передавайте ссылку на класс GameMenu и обращайтесь к его свойству. Всё просто же.
__________________
O God! The Aftermath. |
|
|||||
Регистрация: Jan 2010
Сообщений: 25
|
Да вот ничего не выходит. Могу кинуть проект.
Добавлено через 11 минут Вообще проблема в том что я не вижу текст у кнопки даже в самом классе кнопки... |
Часовой пояс GMT +4, время: 20:11. |
|
« Предыдущая тема | Следующая тема » |
|
|