Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 07.01.2010, 17:14
Oli Short вне форума Посмотреть профиль Отправить личное сообщение для Oli Short Найти все сообщения от Oli Short
  № 1  
Ответить с цитированием
Oli Short

Регистрация: Aug 2009
Сообщений: 38
По умолчанию Создание динамических кнопок

Здравствуйте. Создаю динамическую кнопку

Код AS3:
//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+'';
но что то слишком громоздко получается и не красиво. Возможно есть вариант полегче? Cпасибо

Старый 07.01.2010, 17:40
dmitriev вне форума Посмотреть профиль Отправить личное сообщение для dmitriev Найти все сообщения от dmitriev
  № 2  
Ответить с цитированием
dmitriev
 
Аватар для dmitriev

Регистрация: Jun 2007
Адрес: Челябинск
Сообщений: 303
Отправить сообщение для dmitriev с помощью ICQ
Можно создать кнопку руками и указав ей Linkage описать её в отдельном классе. Так не придётся создавать каждый раз экземпляры подложки, текстФилда и прочего.
__________________
O God! The Aftermath.

Старый 07.01.2010, 23:11
Oli Short вне форума Посмотреть профиль Отправить личное сообщение для Oli Short Найти все сообщения от Oli Short
  № 3  
Ответить с цитированием
Oli Short

Регистрация: Aug 2009
Сообщений: 38
вот нашел что нужно
Код AS3:
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;
        }
    }
}
создаю на главной

Код AS3:
import files.btnClass
 
var btn:MyButton = new MyButton('text btn');
 
btn.x = 10;
btn.y = 10;
 
addChild(btn);
пишет что
Цитата:
1046: Type was not found or was not a compile-time constant: MyButton.
1180: Call to a possibly undefined method MyButton.
вроде все делаю правильно. подскажите пожалуйста в чем моя ошибка. спасибо


Последний раз редактировалось Oli Short; 08.01.2010 в 01:11. Причина: грамотическая ошибка
Старый 08.01.2010, 01:21
Alex Lexcuk вне форума Посмотреть профиль Отправить личное сообщение для Alex Lexcuk Посетить домашнюю страницу Alex Lexcuk Найти все сообщения от Alex Lexcuk
  № 4  
Ответить с цитированием
Alex Lexcuk

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
ну и...
скрипт для кнопки записали в файл MyButton.as и сунули его в папку с fla файлом.
Если не работает, то плющит Adobe Flash.
__________________
Гоночка

Старый 08.01.2010, 01:24
Oli Short вне форума Посмотреть профиль Отправить личное сообщение для Oli Short Найти все сообщения от Oli Short
  № 5  
Ответить с цитированием
Oli Short

Регистрация: Aug 2009
Сообщений: 38
прошу прощения

имя класса и имя .as не совпадало. спасибо!

Старый 12.01.2010, 18:12
warez_men вне форума Посмотреть профиль Отправить личное сообщение для warez_men Найти все сообщения от warez_men
  № 6  
Ответить с цитированием
warez_men

Регистрация: Jan 2010
Сообщений: 25
Вопрос такой у меня есть кнопка (стандартная) в библиотеке. Я дал ей имя (BtMenu) также тексту тоже присвоил имя (caption) и хочу текст на кнопки менять из другого класса подскажите как это сделать?

Старый 12.01.2010, 19:36
dmitriev вне форума Посмотреть профиль Отправить личное сообщение для dmitriev Найти все сообщения от dmitriev
  № 7  
Ответить с цитированием
dmitriev
 
Аватар для dmitriev

Регистрация: Jun 2007
Адрес: Челябинск
Сообщений: 303
Отправить сообщение для dmitriev с помощью ICQ
В другом классе должна быть ссылка на это кнопку, создавайте её когда добавляете кнопку на сцену. Или, если вы добавили на сцену руками, то она будет доступна по instance name в классе-родителе.
__________________
O God! The Aftermath.

Старый 12.01.2010, 21:02
warez_men вне форума Посмотреть профиль Отправить личное сообщение для warez_men Найти все сообщения от warez_men
  № 8  
Ответить с цитированием
warez_men

Регистрация: Jan 2010
Сообщений: 25
Клас кнопки
Код AS3:
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;
 
		}
	}
}
основной класс
Код AS3:
 
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);
 
 
		}
 
 
	}
}

Старый 12.01.2010, 21:50
dmitriev вне форума Посмотреть профиль Отправить личное сообщение для dmitriev Найти все сообщения от dmitriev
  № 9  
Ответить с цитированием
dmitriev
 
Аватар для dmitriev

Регистрация: Jun 2007
Адрес: Челябинск
Сообщений: 303
Отправить сообщение для dmitriev с помощью ICQ
Классы следует называть с прописной.

Определите свойство btPlay как публичное. В любой другой класс передавайте ссылку на класс GameMenu и обращайтесь к его свойству. Всё просто же.
__________________
O God! The Aftermath.

Старый 12.01.2010, 22:07
warez_men вне форума Посмотреть профиль Отправить личное сообщение для warez_men Найти все сообщения от warez_men
  № 10  
Ответить с цитированием
warez_men

Регистрация: Jan 2010
Сообщений: 25
Да вот ничего не выходит. Могу кинуть проект.

Добавлено через 11 минут
Вообще проблема в том что я не вижу текст у кнопки даже в самом классе кнопки...

Создать новую тему Ответ Часовой пояс GMT +4, время: 20:11.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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