【问题标题】:resizing overlapping buttons in as3在 as3 中调整重叠按钮的大小
【发布时间】:2012-07-25 15:44:34
【问题描述】:

提前感谢大家的帮助。 我做了一个 100% flash 背景拉伸...这是 main.as 的代码:

package {

import flash.display.MovieClip;
import flash.text.TextField;
import flash.events.Event;
import flash.net.navigateToURL;
    import flash.net.URLRequest;
import flash.events.MouseEvent;


public class Main extends MovieClip

{
    public function Main()
    {
        init();

        checkResize();

    clip_mc.addEventListener(MouseEvent.CLICK, siteNav1);

    clip_amministra.addEventListener(MouseEvent.CLICK, siteNav2);


    clip_chisiamo.addEventListener(MouseEvent.CLICK, siteNav4);

    }

    function siteNav1(e:MouseEvent):void {
    navigateToURL(new URLRequest("http://www.amicolibro.org/index.php"), "_self");

    }

    function siteNav2(e:MouseEvent):void {
    navigateToURL(new URLRequest("http://www.amicolibro.org/log-in-amministratore.php"), "_self");

    }


    function siteNav4(e:MouseEvent):void {
    navigateToURL(new URLRequest("http://www.amicolibro.org/chi-siamo.php"), "_self");

    }                           

    private function init():void
    {
        stage.frameRate=31;

        bg_mc.x=0;
        bg_mc.y=0;
        bg_mc.width=stage.stageWidth;
        bg_mc.height=stage.stageHeight;

        clip_mc.x=stage.stageWidth/6.3;
        clip_mc.y=stage.stageHeight/2.2;

        clip_amministra.x=stage.stageWidth/1.3;
        clip_amministra.y=stage.stageHeight/2;


              clip_chisiamo.x=stage.stageWidth/10;
        clip_chisiamo.y=stage.stageHeight/1.19; 

    }

    private function checkResize():void
    {
        stage.addEventListener(Event.RESIZE, resizeStage);
    }

    private function resizeStage(event:Event):void 
    {
        init();
    }

}
}

是否可以按比例调整按钮 clip_mc、clip_amministra、clip_chisiamo 的大小?

谢谢

【问题讨论】:

    标签: actionscript-3


    【解决方案1】:

    如果您的对象靠得太近或重叠,您是否想要一种方法来调整它们的大小?

    这是您可以解决此问题的一种可能方法。有更好的方法,但这是最简单的。

    做一个简单的相对尺寸。这不会很精确,但会非常快并且可能会满足您的需求。假设 400x500(例如,调整这些值直到获得正确的数量)是舞台在它们开始重叠之前可以以本机按钮大小达到的最小值,然后将其用作您的 init() 方法(以及两个新的全局:

        private function init():void
        {
            var minWidth:Number = 400; //change this number to be whatever works best
            var minHeight:Number = 500; //change this number to be whatever works best
    
            stage.frameRate=31;
    
            bg_mc.x=0;
            bg_mc.y=0;
            bg_mc.width=stage.stageWidth;
            bg_mc.height=stage.stageHeight;
    
            clip_mc.x=stage.stageWidth/6.3;
            clip_mc.y=stage.stageHeight/2.2;
    
            clip_amministra.x=stage.stageWidth/1.3;
            clip_amministra.y=stage.stageHeight/2;
    
            clip_chisiamo.x=stage.stageWidth/10;
            clip_chisiamo.y = stage.stageHeight / 1.19; 
    
        //this is the new stuff
            var scaleAmount:Number = 1;
            if (stage.stageWidth < minWidth || stage.stageHeight < minHeight) {
                if (minWidth / stage.stageWidth < minHeight / stage.stageHeight) {
                    scaleAmount = (minWidth / stage.stageWidth);
                }else{
                    scaleAmount = minHeight / stage.stageHeight;
                }
            }
    
            //do this for all your buttons scaleX and scaleY properties, i'm assuming clip_mc, clip_amministra and clip_chisiamo are some of your button instances.
            clip_mc.scaleX = scaleAmount;
            clip_mc.scaleY = scaleAmount;
    
            clip_amministra.scaleX = scaleAmount;
            clip_amministra.scaleY = scaleAmount;
    
            clip_chisiamo.scaleX = scaleAmount;
            clip_chisiamo.scaleY = scaleAmount;
        }
    

    【讨论】:

    • 那么您是否正在寻找一种方法来使您的按钮只有在它们开始重叠时才变小?
    • 当我的屏幕分辨率低于 1920x1080 ....如果我不调整按钮链接的大小......是的,它们开始重叠,我需要一些准确的信息:1- ..然后在你的 init() 方法中使用它:我必须在这里添加你的脚本吗?私有函数 init():void { stage.frameRate=31; bg_mc.x=0; // etc.. if(stage.stageWidth
    • 我更新了代码以包含您的整个 init() 函数,希望这样更清楚。
    • 感谢您的友好回答我尝试了很多...500x400...100x2000...200x100 等等..等等..但是当我使用低于 1920x1080 的屏幕分辨率时(这是我的屏幕分辨率)按钮没有相对于背景的比例缩放(在代码中它是 MovieClip bg_mc)..换句话说......如果我使用低于 1920x1080 的分辨率,MovieClip bg_mc 缩放而不失真,而按钮不要相对于背景进行缩放,它们会重叠,谢谢
    【解决方案2】:

    我是这样解决的:

    包{

    import flash.display.MovieClip;
    import flash.text.TextField;
    import flash.events.Event;
    import flash.net.navigateToURL;
        import flash.net.URLRequest;
    import flash.events.MouseEvent;
    
    
    public class Main extends MovieClip
    
    {
        public function Main()
        {
            init();
    
            resizeHandler();
    
            checkResize();
    
        clip_mc.addEventListener(MouseEvent.CLICK, siteNav1); 
    
        clip_amministra.addEventListener(MouseEvent.CLICK, siteNav2);
    
        clip_chisiamo.addEventListener(MouseEvent.CLICK, siteNav4);
    
    
        }
    
        function siteNav1(e:MouseEvent):void {                                       
        navigateToURL(new URLRequest("http://www.amicolibro.org/index.php"), "_self");
    
        }
    
        function siteNav2(e:MouseEvent):void {
        navigateToURL(new URLRequest("http://www.amicolibro.org/log-in-amministratore.php"), "_self");
    
               }
    
        function siteNav4(e:MouseEvent):void {
        navigateToURL(new URLRequest("http://www.amicolibro.org/chi-siamo.php"), "_self");
    
        }
    
    
        private function init():void
        {
            stage.frameRate=31;
    
            bg_mc.x=0;                           
            bg_mc.y=0;
            bg_mc.width=stage.stageWidth;
            bg_mc.height=stage.stageHeight;
    
            clip_mc.x=stage.stageWidth/6.3;  
            clip_mc.y=stage.stageHeight/2.2;  
    
            clip_amministra.x=stage.stageWidth/2.7; 
            clip_amministra.y=stage.stageHeight/4.9; 
    
    
                clip_chisiamo.x=stage.stageWidth/10;
            clip_chisiamo.y=stage.stageHeight/1.19;
    
            }       
    
    
        private function resizeHandler(event:Event=null):void  //resize buttons
    
              {
    
               var sw:Number = stage.stageWidth;
               var sh:Number = stage.stageHeight;
    
    
    
              clip_mc.width = sw /8;         // clip_mc is 1/8 as wide as the stage..can change this number to be whatever works best
          clip_mc.height = sh /8;    // clip_mc is 1/8 as high as the stage..can change this number to be whatever works best
    
              clip_amministra.width = sw /10;     // clip_amministra is 1/10 as wide as the stage..can change this number to be whatever works best
          clip_amministra.height = sw /10;    // clip_amministra is 1/10 as high as the stage..can change this number to be whatever works best
    
    
          clip_chisiamo.width = sw /6;        //clip_chisiamo is 1/6 as wide as the stage..can change this number to be whatever works best
          clip_chisiamo.height = sh /6;     // clip_chisiamo is 1/6 as high as the stage..can change this number to be whatever works best
    
    
    
          clip_mc.scaleX <= clip_mc.scaleY ? (clip_mc.scaleX = clip_mc.scaleY) : (clip_mc.scaleY = clip_mc.scaleX); // keeps clip_mc proportional 
    
          clip_amministra.scaleX <= clip_amministra.scaleY ? (clip_amministra.scaleX = clip_amministra.scaleY) : (clip_amministra.scaleY = clip_amministra.scaleX); // keeps clip_amministra proportional
    
          clip_chisiamo.scaleX <= clip_chisiamo.scaleY ? (clip_chisiamo.scaleX = clip_chisiamo.scaleY) : (clip_chisiamo.scaleY = clip_chisiamo.scaleX); // keeps clip_chisiamo proportional
    
    
                     }
    
          private function checkResize():void
        {
            stage.addEventListener(Event.RESIZE, resizeStage);
        }
    
          private function resizeStage(event:Event):void 
        {
            init();
        }
        }
    }
    

    谢谢

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-21
      • 1970-01-01
      • 2012-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多