【问题标题】:Position of buttons as3按钮的位置 as3
【发布时间】:2018-10-09 06:17:49
【问题描述】:

我需要一些关于 AS3 中按钮位置的帮助。和之前的话题一样,我用AS3做了一个IRC客户端,但是当用户加入频道时,会添加一个按钮,但是如果IRC上已经有一个按钮并且用户加入新频道,就会添加新按钮此外,这适用于用户加入的每个频道,但它应该位于最后一个按钮之后(并排)。如果用户加入更多频道也是如此。我怎样才能在 x 和 y 位置以最佳方式做到这一点?

这是我现在的代码:

function onChannelButton(channel)
{
var test:MovieClip = new MovieClip();
var btn:Button;

for(var j:int = 0; j < btn.length; j++) {
    btn = new Button();
    btn.name = "btn";
    btn.label = channel;
    btn.width = 90;
    btn.x = 120;
    btn.y = 487.25;
    test.addChild(btn);
    }
    addChild(test);
}

希望你能帮助我!谢谢!

【问题讨论】:

    标签: actionscript-3 button position


    【解决方案1】:

    试试这个:

    const PADDING:uint = 10;
    const NUM_BUTTONS:uint = 10;
    
    onChannelButton();
    
    function onChannelButton():void {
        var test:Sprite = new Sprite();
        var btn:Button;
    
        //NUM_BUTTONS or btn.length ? (Don't know about your Button class
        for (var i:int = 0; i < NUM_BUTTONS; i++) 
        {
                btn = new Button();
                btn.name = "btn";
                btn.width = 90;
                btn.x = (btn.width + PADDING) * i;
                test.addChild(btn);
        }
    
        addChild(test);
    }
    

    【讨论】:

    • gPeart 感谢您的帮助,但我得到了 10 个按钮,请参阅:i42.tinypic.com/w174p1.png - 意思是如果我输入 '/join #test',则必须添加一个按钮,但如果我加入还有一个频道,那么必须添加新按钮才能在频道之间切换,但是我加入的第二个频道并且第二个按钮必须位于第一个按钮之后(我加入的第一个频道),例如:i42.tinypic.com/j5cl0i.png跨度>
    • 非常感谢!这有助于我每次都以正确的方式尝试它,现在没问题。只是,我必须让父子的 + 新功能来设置按钮位置。
    【解决方案2】:

    我通常会执行以下操作,使用您的迭代器 j 来确定 x 和 y 位置。

    我已经创建了四个变量,希望能够使代码非常容易解释。在这种情况下,每个 btn 的 y 位置不会改变,这就是 btnSpacingY 设置为 0 的原因。

    var btnStartX:Number = 120;
    var btnStartY:Number = 487.25;
    var btnSpacingX:Number = 120;
    var btnSpacingY:Number = 0;
    
    function onChannelButton(channel) {
        var test:MovieClip = new MovieClip();
        var btn:Button;
    
        for (var j:int = 0; j < 10; j++) {
            btn = new Button();
            btn.name = "btn";
            btn.label = channel;
            btn.width = 90;
            btn.x = btnStartX + (j * btnSpacingX);
            btn.y = btnStartY + (j * btnSpacingY);
            test.addChild(btn);
        }
        addChild(test);
    }
    

    【讨论】:

    • 感谢您的回复!但是“长度”是其中的问题,因为我得到了这个:“场景 1,层 'Main',第 3 帧,第 689 行 1119:通过静态类型 fl.controls:Button 的引用访问可能未定义的属性长度。 " 并添加了 fl.controls.Button,这有什么问题?
    • 是的,对不起,我只是关注你所问的问题。您需要修复 for 循环。将“btn.length”更改为您要创建的按钮数。 (例如,j
    猜你喜欢
    • 1970-01-01
    • 2010-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-05
    • 1970-01-01
    • 2013-08-31
    • 1970-01-01
    相关资源
    最近更新 更多