В Drug.as у меня есть кнопка, слушатель находится в Main, и я пытаюсь выяснить, на какой экземпляр я нажал, чтобы я мог выбрать цену лекарства и совершить покупку.
MAIN.AS
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
/**
* ...
* @author MindGem
*/
public class Main extends Sprite
{
private var drug:Drug;
private var cash:Cash;
private var drugNames:Array = ["Ganja", "Khat", "Extacy", "Amphetamine", "Dopamine", "Heroin", "Cocaine"];
private var drugPrices:Array = [5, 10, 15, 20, 30, 50, 75];
private var randomDrugPrice:uint;
private var drugCollection:Vector.<Drug>;
public function Main():void
{
drugCollection = new Vector.<Drug>;
for (var i:int = 0; i < drugNames.length; i++)
{
randomDrugPrice = Math.random() * (i*5) + drugPrices[i];
drug = new Drug();
addChild(drug);
drugCollection.push(drug);
drug.setName(drugNames[i]);
drug.setPrice(randomDrugPrice);
drug.x = 0;
drug.y = (i * 24);
drug.buy.addEventListener(MouseEvent.CLICK, BuyDrug);
}
cash = new Cash();
addChild(cash);
cash.x = 100;
cash.y = 200;
}
public function BuyDrug(e:MouseEvent):void
{
//How can I find out the price or id of the clicked instance?
Вот где мне нужно узнать, на какой экземпляр я нажал.Теперь я попробовал Drug / e.currentTarget) .getPrice (), я попытался вставить экземпляры внутри вектора и выбрать его, у меня ничего не работает.
Я могу поставить слушателя насам класс вместо кнопки, но это делает весь класс кликабельным, и у меня есть текстовые поля там, я не хочу, чтобы это влияло.Что я могу сделать?
}
}
}
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
DRUG.AS
package
{
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.text.TextField;
import flash.text.TextFieldType;
import flash.text.TextFormat;
/**
* ...
* @author MindGem
*/
public class Drug extends Sprite
{
private var drugNameContainer:MovieClip;
private var drugNameText:TextField;
private var drugPriceContainer:MovieClip;
private var drugPriceText:TextField;
private var textDesigner:TextFormat;
private var buyDrugText:TextField;
public var buy:MovieClip;
private var buyLabel:TextField;
private var price:uint = 12;
private var drugName:String = "Cocaine";
public function Drug()
{
buyLabel = new TextField();
drugNameContainer = new MovieClip();
drugPriceContainer = new MovieClip();
buy = new MovieClip();
buyDrugText = new TextField();
textDesigner = new TextFormat();
drugNameText = new TextField();
drugPriceText = new TextField();
textDesigner.align = "right";
textDesigner.font = "_sans";
textDesigner.size = 13;
drugNameContainer.graphics.beginFill(0xeeeeee);
drugNameContainer.graphics.lineStyle(1, 0xbbbbbb);
drugNameContainer.graphics.drawRoundRect(50, 50, 120, 20, 6, 6);
drugPriceContainer.graphics.beginFill(0xeeeeee);
drugPriceContainer.graphics.lineStyle(1, 0xbbbbbb);
drugPriceContainer.graphics.drawRoundRect(175, 50, 50, 20, 6, 6);
buy.graphics.beginFill(0x60ce0f);
buy.graphics.lineStyle(2, 0x000000);
buy.graphics.drawRoundRect(275, 50, 50, 21, 6, 6);
buy.buttonMode = true;
drugPriceText.x = 120;
drugPriceText.y = 51;
drugNameText.x = 66;
drugNameText.y = 50;
buyDrugText.type = TextFieldType.INPUT;
buyDrugText.text = "1";
buyDrugText.x = 230;
buyDrugText.y = 50;
buyDrugText.background = true;
buyDrugText.backgroundColor = 0xcccccc;
buyDrugText.border = true;
buyDrugText.borderColor = 0x000000;
buyDrugText.width = 40;
buyDrugText.height = 20;
buyDrugText.maxChars = 3;
buyDrugText.restrict = "0-9";
buyDrugText.setTextFormat(textDesigner);
buyLabel.text = "BUY";
buyLabel.x = 217;
buyLabel.y = 51;
buyLabel.mouseEnabled = false;
buyLabel.setTextFormat(textDesigner);
addChild(drugNameContainer);
addChild(drugPriceContainer);
addChild(drugNameText);
addChild(buy);
addChild(buyDrugText);
addChild(drugPriceText);
addChild(buyLabel);
}
public function setName(p_drugName:String):void
{
drugName = p_drugName;
drugNameText.text = drugName;
drugNameText.mouseEnabled = false;
drugNameText.setTextFormat(textDesigner);
}
public function setPrice(p_price:uint):void
{
price = p_price;
drugPriceText.text = "$" + price;
drugPriceText.mouseEnabled = false;
drugPriceText.setTextFormat(textDesigner);
}
public function getPrice():uint
{
return uint(buyDrugText.text)*price;
}
}
}
Помощь?