Lemat
04.04.2013, 07:28
Здравствуйте! Я недавно стал изучать AS3.
Пытаюсь сделать кнопки реагирующие на нажатие и наведение мыши но обработчики не срабатывают.
Вот код:
package my_buttons
{
import flash.display.Shape;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
/**
* ...
* @author Lemat
*/
public class Main extends Sprite
{
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point
var new_button:NewClass = new NewClass(10, 10, 120, 20, "my first button!");
this.addChild(new_button);
}
}
}
и второй файл
package my_buttons
{
import flash.display.Shape;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
/**
* ...
* @author Lemat
*/
public class NewClass extends Shape {
var xInput:Number, yInput:Number, wInput:Number, hInput:Number;
public function NewClass( xInput2:Number,
yInput2:Number,
wInput2:Number,
hInput2:Number,
text:String):void {
xInput = xInput2;
yInput = yInput2;
wInput = wInput2;
hInput = hInput2;
setYellow();
addEventListener(MouseEvent.MOUSE_DOWN,setGreen);
addEventListener(MouseEvent.MOUSE_OVER,setGreen);
addEventListener(MouseEvent.MOUSE_OUT, setGreen);
addEventListener(MouseEvent.CLICK, setGreen);
}
function setYellow():void {
graphics.beginFill(0xffcc00);
graphics.drawRoundRect(xInput,
yInput,
wInput,
hInput,
Math.round(wInput / 5),
Math.round(wInput / 5)
);
}
function setGray():void {
graphics.beginFill(0x808080);
graphics.drawRoundRect(xInput,
yInput,
wInput,
hInput,
Math.round(wInput / 5),
Math.round(wInput / 5)
);
}
function setGreen():void {
graphics.beginFill(0x00ff00);
graphics.drawRoundRect(xInput,
yInput,
wInput,
hInput,
Math.round(wInput / 5),
Math.round(wInput / 5)
);
}
}
}
кнопка закрашивается в жёлтый цвет но более ни на что не реагирует. Что я сделал не так?
Пытаюсь сделать кнопки реагирующие на нажатие и наведение мыши но обработчики не срабатывают.
Вот код:
package my_buttons
{
import flash.display.Shape;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
/**
* ...
* @author Lemat
*/
public class Main extends Sprite
{
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point
var new_button:NewClass = new NewClass(10, 10, 120, 20, "my first button!");
this.addChild(new_button);
}
}
}
и второй файл
package my_buttons
{
import flash.display.Shape;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
/**
* ...
* @author Lemat
*/
public class NewClass extends Shape {
var xInput:Number, yInput:Number, wInput:Number, hInput:Number;
public function NewClass( xInput2:Number,
yInput2:Number,
wInput2:Number,
hInput2:Number,
text:String):void {
xInput = xInput2;
yInput = yInput2;
wInput = wInput2;
hInput = hInput2;
setYellow();
addEventListener(MouseEvent.MOUSE_DOWN,setGreen);
addEventListener(MouseEvent.MOUSE_OVER,setGreen);
addEventListener(MouseEvent.MOUSE_OUT, setGreen);
addEventListener(MouseEvent.CLICK, setGreen);
}
function setYellow():void {
graphics.beginFill(0xffcc00);
graphics.drawRoundRect(xInput,
yInput,
wInput,
hInput,
Math.round(wInput / 5),
Math.round(wInput / 5)
);
}
function setGray():void {
graphics.beginFill(0x808080);
graphics.drawRoundRect(xInput,
yInput,
wInput,
hInput,
Math.round(wInput / 5),
Math.round(wInput / 5)
);
}
function setGreen():void {
graphics.beginFill(0x00ff00);
graphics.drawRoundRect(xInput,
yInput,
wInput,
hInput,
Math.round(wInput / 5),
Math.round(wInput / 5)
);
}
}
}
кнопка закрашивается в жёлтый цвет но более ни на что не реагирует. Что я сделал не так?