在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;
}
}
}
帮助?
答案 0 :(得分:1)
您将购买MovieClip直接添加到Drug,因此您可以假设:
public function BuyDrug(e:MouseEvent):void
{
var drugClicked:Drug = e.target.parent as Drug;
// more stuff here
}
(当然,你必须将听众直接添加到“购买”)
答案 1 :(得分:0)
drug = new Drug();
drug.name = "drug"+i;
现在你可以识别哪个项目被点击了。