![]() |
|
||||||||||
|
|||||
|
Господа, вот такая вот проблемка. Пишу код:
package
{
import flash.display.Sprite;
import flash.display.SimpleButton;
import flash.display.Shape;
import flash.events.MouseEvent;
import flash.events.MouseEventType;
import flash.util.trace;
public class myApp extends Sprite
{
protected var b:Array;
public function myApp()
{
this.b = new Array();
for (var i:uint = 0;i<10;i++)
{
this.b[i] = new myButton();
this.b[i].x = 60*i;
this.b[i].y = 10;
this.b[i].addEventListener(MouseEventType.CLICK,this.onButtonClick);
this.addChild(this.b[i]);
}
}
protected function onButtonClick(evnt:MouseEvent):Void
{
trace ('onRelease called');
}
}
private class myButton extends SimpleButton
{
protected var downSprite:Shape;
protected var upSprite:Shape;
public function myButton()
{
this.downSprite = new Shape();
this.downSprite.graphics.lineStyle(2, 0x202020);
this.downSprite.graphics.beginFill(0x00FF00);
this.downSprite.graphics.drawRect(10, 10, 50, 50);
this.upSprite = new Shape();
this.upSprite.graphics.lineStyle(2, 0x202020);
this.upSprite.graphics.beginFill(0xFFFF00);
this.upSprite.graphics.drawRect(10, 10, 50, 50);
this.upState = upSprite;
this.overState = upSprite;
this.downState = downSprite;
this.useHandCursor = true;
this.hitTestState = this;
}
}
}
Объясните, pls, почему? ![]()
__________________
Infernal error: чёрт сломал ногу, пытаясь разобраться в вашем коде --- my blog: http://batsuev.com/wp/ |
|
|||||
|
Banned
[+1 16.05.2006]
[++1 16.05.2006] [+ 1 21.05.06] [++ за хамство] [+1 21.05.2006] Регистрация: Dec 2003
Сообщений: 3,925
|
Такие вещи изначально объявляются в конструкторе, а не n раз для каждого экземпляра
![]() Последний раз редактировалось Antares; 07.12.2005 в 09:32. |
|
|||||
|
хм. а почему тогда событие всё-таки срабатывает только для первого? и почему оно вообще срабатывает?
__________________
Infernal error: чёрт сломал ногу, пытаясь разобраться в вашем коде --- my blog: http://batsuev.com/wp/ |
|
|||||
|
Ответ у тебя в блоге.
Между прочим конструкции типа this.b[i] = new myButton(); ЗЛО. так нехорошо в масив елементы добавлять... просто нехорошо... и некрасиво... Если начал баловаться с АС3 - старайся отучатся от АС1 стиля программирования. |
|
|||||
|
2 Mocus: а можно объснить подробно почему именно такой подход (добавление в массив) неправилен?
__________________
:::::::::::: sump :::::::::::: |
|
|||||
|
Интересно, что кому-то еще кнопки в старом флеше не надоели, давай их и здесь мучать.., это я к тому, при всей неправильности такая же схема со спрайтом нормально работает:
package
{
import flash.display.Sprite;
import flash.display.SimpleButton;
import flash.display.Shape;
import flash.events.MouseEvent;
import flash.events.MouseEventType;
import flash.util.trace;
public class myApp extends Sprite
{
protected var b:Array;
public function myApp()
{
this.b = new Array();
for (var i:uint = 0;i<10;i++)
{
this.b[i] = new myButton();
this.b[i].x = 60*i;
this.b[i].y = 10;
this.b[i].addEventListener(MouseEventType.CLICK,this.onButtonClick);
this.addChild(this.b[i]);
}
}
protected function onButtonClick(evnt:MouseEvent):Void
{
trace ('onRelease called');
}
}
private class myButton extends Sprite
{
public function myButton()
{
graphics.lineStyle(2, 0x202020);
graphics.beginFill(0x00FF00);
graphics.drawRect(10, 10, 50, 50);
}
}
}
|
|
|||||
|
Banned
[+1 16.05.2006]
[++1 16.05.2006] [+ 1 21.05.06] [++ за хамство] [+1 21.05.2006] Регистрация: Dec 2003
Сообщений: 3,925
|
Цитата:
Но это не про АС3. |
|
|||||
|
Цитата:
|
![]() |
![]() |
Часовой пояс GMT +4, время: 22:51. |
|
|
« Предыдущая тема | Следующая тема » |
|
|