【问题标题】:Change stage background color in AS3?在 AS3 中更改舞台背景颜色?
【发布时间】:2011-03-26 20:01:29
【问题描述】:

我正在使用纯 AS3 来构建我的项目。我想知道是否有任何方法可以通过 AS3 更改舞台背景颜色...谢谢您的帮助....

【问题讨论】:

    标签: flash actionscript-3 background-color


    【解决方案1】:

    尝试设置应用程序对象的背景颜色。

    【讨论】:

    • 谢谢...您能解释更多细节吗?我试过谷歌但找不到任何东西.....谢谢。
    【解决方案2】:

    像这样:

    [SWF(backgroundColor="0xec9900")]
    public class Main extends Sprite
    {
        }
    

    【讨论】:

    • 问题是“改变 stage 背景...”,这个答案告诉你如何改变主 MXML 的颜色。 Main MXML 是 stage 的子级。正确答案是 stage.color = 0xABCDEF 给了 Peter Gibson。
    • @PatrickS 他的答案适用于纯 AS3。他只是用你不需要的废话污染了他的答案。
    【解决方案3】:

    您可以在初始化时设置背景颜色,就像@Wopdoowop 提到的那样,但是如果您想动态更改它,您需要创建自己的位图/精灵/电影剪辑作为背景(应该低于其余部分您的内容并具有舞台的宽度和高度)并更改该位图/精灵/电影剪辑的颜色。

    【讨论】:

      【解决方案4】:

      这将创建一个形状并将其添加到所有内容后面的舞台上。要随时更改颜色,请致电:changeBGColor(0xFF0000)(变为红色)

      在调整窗口大小时,它还保持背景的大小(覆盖所有区域)。

      import flash.display.Sprite;
      import flash.events.Event;
      
      var default_bg_color:uint = 0xffffff;
      
      var bgshape:Sprite;
      stage.align = "TL";
      stage.scaleMode = "noScale";
      
      function initBG()
      {
          bgshape = new Sprite();
          bgshape.graphics.beginFill(default_bg_color);
          bgshape.graphics.drawRect(0,0,stage.stageWidth, stage.stageHeight);
          addChildAt(bgshape, 0);
          stage.addEventListener(Event.RESIZE, resizeBGWithStage);
      }
      function changeBGColor(color:uint) 
      {
          bgshape.graphics.beginFill(color);
          bgshape.graphics.drawRect(0,0,stage.stageWidth, stage.stageHeight);
      }
      function resizeBGWithStage(e:Event)
      {
          try {
              bgshape.width = stage.stageWidth;
              bgshape.height = stage.stageHeight;
          } catch(e){}
      }
      
      initBG();
      

      【讨论】:

      • 感谢 Makram...但是 Wopdoowop 的方式要容易得多... :D +1 虽然
      • 作为每个阶段的抽象类都很有趣!
      【解决方案5】:

      我在 creationComplete 处理程序中有这个

      <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
                     xmlns:s="library://ns.adobe.com/flex/spark"
                     xmlns:mx="library://ns.adobe.com/flex/mx"
                     creationComplete="on_init();">
      
      private function on_init():void {
          stage.color = 0x000000;
      }
      

      虽然我觉得它可以在任何地方工作。

      【讨论】:

      • 舞台没有'color'属性? Flash 播放器 10?
      • 可能 - 这是内存中 Flash Player 11 上的 flex4.6
      • 这个答案几乎是对上述问题的完美回答。当 stage 不为空时,您可以窥视并戳它的颜色。还有一个事件:addEventListener(Event.ADDED_TO_STAGE, onAddToStage);(去掉xml废话,我用的是纯AS3就可以了)
      【解决方案6】:

      您应该能够使用 Actionscript 3.0 的以下行来设置背景颜色。 0x000000 表示黑色,0xFFFFFF 表示白色以及介于两者之间的任何值。

      this.stage.color = 0x00000;

      【讨论】:

        【解决方案7】:
        [SWF(width='700',height='525',backgroundColor='#000000',frameRate='30')]
        public class RunTime extends Sprite {
        

        【讨论】:

          【解决方案8】:

          我建议制作一个精灵,然后在后面制作它。我就是这样做的。

          请务必import flash.display.Sprite;

          var bkg:Sprite=new Sprite();
          //replace the 0x000000 with a hex code.
          bkg.graphics.beginFill(0x000000, 1)
          bkg.graphics.drawRect(0,0,stage.stageWidth,stage.stageHeight)
          bkg.graphics.endFill()
          addChild(bkg)
          

          一个优点是您可以手动或使用代码绘制背景(如果需要),然后通过代码将其放入。

          【讨论】:

            猜你喜欢
            • 2012-07-08
            • 1970-01-01
            • 1970-01-01
            • 2015-05-01
            • 2013-08-08
            • 2018-04-06
            相关资源
            最近更新 更多