调整as3中的重叠按钮
问题描述:
感谢所有提前的帮助。 我做了100%的闪存背景拉伸......这是main.as代码:调整as3中的重叠按钮
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可能的一个比例调整?
感谢
答
听起来像是你想要的方式来调整你的对象,如果他们靠得太近或重叠?
以下是一种可能的解决方法。有更好的方式是更多的工作,但这是最简单的。
做一个简单的相对大小。这不会很精确,但会很快,可能会满足您的需求。比方说,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;
}
答
我以这种方式解决:
包{
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();
}
}
}
感谢
所以你在寻找一种方式,让您的按钮较小,只有当他们开始了圈? – BadFeelingAboutThis 2012-07-25 18:12:02
当我有一个屏幕分辨率为1920×1080相比低....如果我不调整按钮链接......啊,他们开始重叠 我需要一些精确的信息: 1 - ..然后使用这在你的init()方法中: 我必须在这里添加你的脚本吗? private function init():void { stage.frameRate = 31; bg_mc.x = 0; //等。 如果(stage.stageWidth umbbberto 2012-07-25 23:34:14
我更新了代码以包含您的整个init()函数,希望它更清晰。 – BadFeelingAboutThis 2012-07-26 17:46:26