![]() |
|
||||||||||
|
|||||
private function init():void
{
songname = new TextField();
|
|
|||||
|
Регистрация: Aug 2008
Сообщений: 17
|
ramshteks, спасибо! Теперь всё понятно, буду действовать дальше)
|
|
|||||
|
Регистрация: 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)
};
прочитал, что при создании экземпляров лучше заносить каждую кнопку в массив, но получается чтобы к ней обратится надо знать номер элемента массива, что соответствует номеру кнопки, который я хочу найти. Последний раз редактировалось sssssss; 01.09.2008 в 17:39. |
|
|||||
|
во первых послушай старших и сделай массив!
во вторых странно другой почему компилятор не выдает ошибки про получение параметра конструктором, тк как ты присваиваешь номер скажи честно у тя кнопочки то появляются? |
|
|||||
|
Регистрация: Aug 2008
Сообщений: 17
|
ramshteks
Появляются) Я просто сам не знаю откуда я скопировал так криво.
На самом деле подумал, почитал, узнал о чудесной штуке 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);
};
|
|
|||||
|
замени на
не зачем создавать бесполезную локальную переменную) а вполне можно запихнуть в конструктор майбаттона. |
|
|||||
|
Регистрация: 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);
}
}
}
|
|
|||||
|
Регистрация: Jul 2007
Адрес: Москва
Сообщений: 996
|
|
![]() |
![]() |
Часовой пояс GMT +4, время: 07:30. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|