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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 30.08.2008, 20:17
ramshteks вне форума Посмотреть профиль Отправить личное сообщение для ramshteks Найти все сообщения от ramshteks
  № 11  
Ответить с цитированием
ramshteks
 
Аватар для ramshteks

Регистрация: Jul 2007
Сообщений: 805
Отправить сообщение для ramshteks с помощью ICQ Отправить сообщение для ramshteks с помощью Skype™
Код:
private function init():void
		{				
			songname = new TextField();
			addChild(songname);
			songname.autoSize = TextFieldAutoSize.LEFT;
			songname.border=true;
			songname.htmlText = "песня";

			songButton = new MovieClip();
			songButton.graphics.drawRect(songname.x, songname.y, songname.width, songname.height);
			songButton.graphics.endFill(); 

			songButton.addChild(songname);
			songname.mouseEnabled = false; 
			songButton.buttonMode = true;			
                                 addChild(songButton)
		
		};

Старый 30.08.2008, 20:23
sssssss вне форума Посмотреть профиль Отправить личное сообщение для sssssss Найти все сообщения от sssssss
  № 12  
Ответить с цитированием
sssssss

Регистрация: Aug 2008
Сообщений: 17
ramshteks, спасибо! Теперь всё понятно, буду действовать дальше)

Старый 01.09.2008, 17:12
sssssss вне форума Посмотреть профиль Отправить личное сообщение для sssssss Найти все сообщения от sssssss
  № 13  
Ответить с цитированием
sssssss

Регистрация: Aug 2008
Сообщений: 17
Вот на таком простом примере не могу получить номер кнопки на которую нажал, так чтобы эта переменная была доступна в классе Main

Код:
public class Main extends MovieClip
	{
		public var playList:Array;

		public function Main() 
		{
			init();	
		};

		private function init():void
		{

		playList = new Array();
		playList.push("A", "B", "C", "D");

		for (var i:int = 0; i < playList.length; i++) 
		{
			var playlistButton:MyButton = new MyButton(i);					
			playlistButton.x = 50;
			playlistButton.y = i*25;
			playlistButton.songname.text = "hello"+i;
                        playlistButton.addEventListener(MouseEvent.CLICK, handleButtonClick);
			addChild(playlistButton);
 
		};

};

private function handleButtonClick(e:MouseEvent):void
		{
			trace(playlistButton.buttonNumber);
			
		};


};
Код:

public class MyButton extends MovieClip
	{
		public var songButton:MovieClip;
		public var songname:TextField;
		public var buttonNumber:int;

		public function MyButton() 
		{	
	                this.buttonNumber = i;
			init();
		};

private function init():void
		{				
			songname = new TextField();			
			songButton = new MovieClip();
			songButton.graphics.drawRect(songname.x, songname.y, songname.width, songname.height);
			songButton.graphics.endFill(); 

			songButton.addChild(songname);
			songname.mouseEnabled = false; 
			songButton.buttonMode = true;			
                        addChild(songButton)
		
		};
все компилируется, но при клике
Код:
1119: Access of possibly undefined property buttonNumber through a reference with static type classes:MyButton.
прочитал, что при создании экземпляров лучше заносить каждую кнопку в массив, но получается чтобы к ней обратится надо знать номер элемента массива, что соответствует номеру кнопки, который я хочу найти.


Последний раз редактировалось sssssss; 01.09.2008 в 17:39.
Старый 01.09.2008, 18:17
ramshteks вне форума Посмотреть профиль Отправить личное сообщение для ramshteks Найти все сообщения от ramshteks
  № 14  
Ответить с цитированием
ramshteks
 
Аватар для ramshteks

Регистрация: Jul 2007
Сообщений: 805
Отправить сообщение для ramshteks с помощью ICQ Отправить сообщение для ramshteks с помощью Skype™
во первых послушай старших и сделай массив!
во вторых странно другой почему компилятор не выдает ошибки про получение параметра конструктором, тк как
Код:
var playlistButton:MyButton = new MyButton(i);
ты присваиваешь номер
Код:
public function MyButton(ПУСТО О_о)
скажи честно у тя кнопочки то появляются?

Старый 01.09.2008, 18:29
sssssss вне форума Посмотреть профиль Отправить личное сообщение для sssssss Найти все сообщения от sssssss
  № 15  
Ответить с цитированием
sssssss

Регистрация: Aug 2008
Сообщений: 17
ramshteks
Появляются) Я просто сам не знаю откуда я скопировал так криво.
Код:
public function MyButton(i:int)

На самом деле подумал, почитал, узнал о чудесной штуке e.target и написал через массив, все работает, буду делать дальше)

Код:
public function createButtons() 
{	
buttonArray = new Array();
for (var i:int = 0; i < playList.length; i++) 
		{
			var playlistButton:MyButton = new MyButton(i);			
			buttonArray.push(playlistButton);			
			buttonArray[i].x = 50;
			buttonArray[i].y = i*25;			
			buttonArray[i].songname.text = "hello"+i;
			buttonArray[i].addEventListener(MouseEvent.CLICK, handleButtonClick);
			addChild(buttonArray[i]); 
		};		
};

private function handleButtonClick(e:MouseEvent):void
		{
			trace(e.target.buttonNumber);
			
		};

Старый 01.09.2008, 18:37
ramshteks вне форума Посмотреть профиль Отправить личное сообщение для ramshteks Найти все сообщения от ramshteks
  № 16  
Ответить с цитированием
ramshteks
 
Аватар для ramshteks

Регистрация: Jul 2007
Сообщений: 805
Отправить сообщение для ramshteks с помощью ICQ Отправить сообщение для ramshteks с помощью Skype™
Код:
var playlistButton:MyButton = new MyButton(i);
замени на
Код:
buttonArray.push(new MyButton(i));
не зачем создавать бесполезную локальную переменную)

а
Код:
buttonArray[i].x = 50;
			buttonArray[i].y = i*25;			
			buttonArray[i].songname.text = "hello"+i;
вполне можно запихнуть в конструктор майбаттона.

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

Регистрация: Sep 2008
Сообщений: 17
Апну эту темку чтоб не создавать новую.
Код:
package {

	import flash.display.MovieClip;
	import flash.events.*;
	import flash.geom.Rectangle;
	import flash.text.TextField;
	import flash.utils.getDefinitionByName;

	public class MyButton extends MovieClip {
		public var songButton:MovieClip;
		public var songname:TextField;
		public var buttonNumber:int;

		public function MyButton(i:int) {
			
			this.buttonNumber = i;
			init();
		}

		private function init():void {
			songname = new TextField();
			songButton = new MovieClip();
			songButton.graphics.drawRect(songname.x, songname.y, songname.width, songname.height);
			songButton.graphics.endFill();

			songButton.addChild(songname);
			songname.mouseEnabled = false;
			songButton.buttonMode = true;
			addChild(songButton);
		}
	}
}
и
Код:
package {

	import flash.display.MovieClip;
	import flash.events.*;
	import MyButton;

	public class Main extends MovieClip {

		public function Main() {
			createButtons();
		}
		public function createButtons() {

			var buttonArray:Array = new Array();

			var i:int = 0;
			
			for (i=0; i < 40; i++) {
				var playlistButton:MyButton = new MyButton(i);
				buttonArray.push(playlistButton);
				buttonArray[i].x = 50;
				buttonArray[i].y = i*25;
				buttonArray[i].songname.text = "hello"+i;
				buttonArray[i].addEventListener(MouseEvent.CLICK, handleButtonClick);
				addChild(buttonArray[i]);
			}
		}

		private function handleButtonClick(e:MouseEvent):void {
			trace(e.target);

		}
	}
}
Трейс выводит [object MovieClip], а как получить доступ к обьекту MyButton и его переменным?

Старый 09.09.2008, 17:34
mre вне форума Посмотреть профиль Отправить личное сообщение для mre Посетить домашнюю страницу mre Найти все сообщения от mre
  № 18  
Ответить с цитированием
mre
 
Аватар для mre

Регистрация: Jul 2007
Адрес: Москва
Сообщений: 996
Код:
buttonArray[i].mouseChildren = false;

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

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

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


 


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


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