【问题标题】:Flash AS3 Creating components on stage via ButtonFlash AS3 通过 Button 在舞台上创建组件
【发布时间】:2014-05-26 13:19:32
【问题描述】:

对不起,我的复杂问题;)

我使用 addChild(...) 方法在我的舞台上创建了几个组件(Slider、TextLabel、CheckBox、...)。现在,如果用户需要一个 Slider 组件(用于另一个输入),我想给他一个带有 CLICK addEventListener 的按钮“addButton”(已经在舞台上)。在 addEventListener 中触发的函数应该在舞台上创建一个新的 Slider 组件,例如

addButton.addEventListener(MouseEvent.CLICK,addSlider("slid1",20,160,250,0,250,30));

问题是将参数传递给函数,我需要将新的 Slider 设置为几个基本值,如位置、宽度、最小值、最大值等......

可以通过这种方式实现吗? 谢谢, 埃德温

【问题讨论】:

    标签: actionscript-3


    【解决方案1】:

    有几种方法可以做到这一点。最简单的方法是在鼠标事件处理程序中调用您的函数:

    addButton.addEventListener(MouseEvent.CLICK, addSliderHandler);
    
    function addSliderHandler(e:MouseEvent):void {
    {
        addSlider("slid1",20,160,250,0,250,30);
    }
    

    编辑(回答您的评论问题):

    要根据现有组件定位新组件,您可以在脚本中保留对位置的变量引用并将其作为参数传递。例如,假设您希望第一个生成的滑块位于 y:160,并且每个滑块都比此大 40px,请将脚本更改为:

    var sliderY:int = 160;
    
    addButton.addEventListener(MouseEvent.CLICK, addSliderHandler);
    
    function addSliderHandler(e:MouseEvent):void {
    {
        addSlider("slid1",20,sliderY,250,0,250,30);//Pass sliderY instead of literal number
        sliderY += 40;//Add 40 to sliderY
    }
    

    现在,每次你使用这个函数创建一个按钮时,它都会定位在 y = sliderY,然后它会在sliderY上加 40....所以第一个生成的将是 160,下一个是 200,下一个在 240 等。

    希望这会有所帮助!

    【讨论】:

    • 感谢 Mick 的回答,这很好用!现在,又出现了一个问题。我想根据舞台上已经存在的滑块来设置参数。比如说,第三个参数 (160) 应该是新滑块的 y 位置。所以现在我必须知道“最新”添加的滑块的 y 位置,并将这个值 +40px 传递给下一个滑块。我希望你知道我的意思?谢谢,埃德温
    • 答案实际上显示了如何使用 X 参数执行此操作,但我已经对其进行了编辑以适用于 Y 位置。看看,让我知道你如何处理它......如果它有效,请接受答案,谢谢。
    猜你喜欢
    • 2011-01-07
    • 2012-02-02
    • 1970-01-01
    • 1970-01-01
    • 2010-10-09
    • 2010-12-09
    • 2011-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多