2012-07-24 45 views
0

我是Flash和Actionscript的新手。我有一个从C#程序启动的电影。在电影中,我创建了不同的文本字段并将数据传回给C#程序。我也有一个热点,当它被点击时,我想创建一个弹出的小菜单。我已经看了很多方法来做到这一点,我决定最简单的方法来做到这一点(或者我认为)会在热点之下创建几个按钮。出于某种原因,当我点击热点时,按钮不会显示在舞台上。我知道它正在通过创建按钮的例程,因为我显示一条消息。我发布了我的代码。谢谢您的帮助!!Actionscript 3动态创建的按钮不显示

import flash.text.TextField; 
import fl.controls.Button; 
import flash.events.Event; 

hotSpot.addEventListener(MouseEvent.CLICK, showMenu); 

var continueBtn:Button; 
var exitBtn:Button; 

function showMenu(evt: Event):void 
{ 
    continueBtn = new Button(); 

    continueBtn.x = 20; 
    continueBtn.y = 100; 
    continueBtn.width = 30; 
    continueBtn.height = 20; 
    continueBtn.border = true; 
    continueBtn.visible = true; 
    continueBtn.label = "Continue"; 
    addChild(continueBtn); 

    exitBtn = new Button(); 

    exitBtn.x = continueBtn.x; 
    exitBtn.y = continueBtn.y + continueBtn.height; 
    exitBtn.width = 30; 
    exitBtn.height = 20; 
    exitBtn.border = true; 
    exitBtn.visible = true; 
    exitBtn.label = "Exit"; 
    addChild(exitBtn); 

    continueBtn.addEventListener(MouseEvent.CLICK, sendMsg); 
    exitBtn.addEventListener(MouseEvent.CLICK, endFlash); 

    inTxt.text = "showMenu"; 

} 

显示消息“showMenu”,但没有一个按钮显示。

加里

+0

运行此代码时是否收到任何编译错误?我无法找到按钮as3类的属性边框http://livedocs.adobe.com/flash/9.0_es/ActionScriptLangRefV3/fl/controls/Button.html#Button() – danii 2012-07-24 18:30:52

+0

您的项目库是否包含任何按钮所需的资产? – 2012-07-25 02:56:52

回答

0
function showMenu(evt: Event):void 

的EVT必须是代替“事件”“的MouseEvent”,因为你加入到“热点”精灵(很可能或其它显示对象)听者的MouseEvent不是一个事件。

hotSpot.addEventListener(MouseEvent.CLICK, showMenu); 

这调用showMenu函数,该函数侦听并捕获MouseEvent而不是Event事件。

您也只导入了Event,导入MouseEvent! 新代码:

import flash.text.TextField; 
import fl.controls.Button; 
import flash.events.MouseEvent; //This line changed! 

hotSpot.addEventListener(MouseEvent.CLICK, showMenu); 
var continueBtn:Button; 
var exitBtn:Button; 
//This line changed! 
function showMenu(evt:MouseEvent):void{ 
continueBtn = new Button(); 
continueBtn.x = 20; 
continueBtn.y = 100; 
continueBtn.width = 30; 
continueBtn.height = 20; 
continueBtn.border = true; 
continueBtn.visible = true; 
continueBtn.label = "Continue"; 
addChild(continueBtn); 

exitBtn = new Button(); 

exitBtn.x = continueBtn.x; 
exitBtn.y = continueBtn.y + continueBtn.height; 
exitBtn.width = 30; 
exitBtn.height = 20; 
exitBtn.border = true; 
exitBtn.visible = true; 
exitBtn.label = "Exit"; 
addChild(exitBtn); 

continueBtn.addEventListener(MouseEvent.CLICK, sendMsg); 
exitBtn.addEventListener(MouseEvent.CLICK, endFlash); 

inTxt.text = "showMenu"; 
} 
+0

谢谢你的回复!我改变了两条线,他们仍然没有出现。有趣的是,我在CS5.5中运行了电影并列出了对象(调试菜单)并将其显示在对象中。只是不在舞台上。 – Gary 2012-07-24 20:17:07