Heyyyy,我正在尝试找到一种简单的方法(或者尽可能简单,我是 AS3 中的新手)在执行鼠标悬停事件时调整舞台大小。具体来说,原始尺寸为 670x40,目标尺寸为 670x230。另外,请回答movieclip。
问问题
333 次
2 回答
1
您无法从代码中动态更改舞台大小,但您可以使用 JS 进行更改。见这里。
于 2013-10-28T13:34:09.197 回答
0
抱歉,这是一篇旧帖子,但我希望这可以帮助某人,我看到 stage.width、stage.height 和 stage.stageWidth、stage.stageHeight 之间存在很多问题和混淆......
您只需要知道必须使用 stage.align = StageAlign.TOP_LEFT 或 StageAlign.TOP 和 stage.scaleMode = StageScaleMode.NO_SCALE;
那么一切都应该正常工作......
这是一种在触发 Event.Resize 时重新调整某些内容大小的方法......在“com”包中创建一个 Main.as 类文件(复制粘贴下面的简单代码以了解它的工作原理)和将 Flash 中的主类设置为“com.Main”。
为什么要在触发 MouseEvent 时这样做?好像是废话...
在这种情况下,Event.RESIZE 是更有效的 AMHO。Event.ADDED 将初始化您要调整大小的项目...
package com
{
import flash.display.Graphics;
import flash.display.MovieClip;
import flash.display.Stage;
import flash.display.StageAlign;
import flash.display.StageQuality;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.text.TextField;
public class Main extends MovieClip
{
public static const ORANGE:int = 0xff9900;
private var bg:MovieClip;
private var bg_mask:MovieClip;
private var marginx:int = 10;
private var marginy:int = 10;
private var display:MovieClip;
private var displayTextField:TextField;
private var ellipseWidth:int = 90;
private var ellipseHeight:int = 90;
public function Main()
{
super();
bg = new MovieClip();
bg_mask = new MovieClip();
display = new MovieClip();
displayTextField = new TextField();
this.addChild(bg);
this.addChild(bg_mask);
this.addChild(display);
this.display.addChild(displayTextField);
displayTextField.text = "";
displayTextField.x = ellipseWidth/Math.PI;
displayTextField.y = ellipseHeight/Math.PI;
stage.align = StageAlign.TOP_LEFT; // or StageAlign.TOP
stage.scaleMode = StageScaleMode.NO_SCALE;
drawBackground();
display.mask = bg_mask;
addListeners();
}
private function drawBackground(thickness:int=1,lineColor:int=0x000000,lineAlpha:Number=0.5,fillColor:int=ORANGE,fillAlpha:Number=0.5):void{
var g:Graphics = bg.graphics;
g.clear();
g.lineStyle(thickness,lineColor,lineAlpha);
g.beginFill(fillColor,fillAlpha);
g.drawRoundRect(marginx,marginy,this.stage.stageWidth-marginx*2,this.stage.stageHeight-marginy*2,ellipseWidth,ellipseHeight);
g.endFill();
}
private function drawMask():void{
var g:Graphics = bg_mask.graphics;
g.clear();
g.lineStyle(1,0x000000,0.3);
g.beginFill(0xcccccc,0.1);
g.drawRoundRect(marginx,marginy,this.stage.stageWidth-marginx*2,this.stage.stageHeight-marginy*2,90,90);
g.endFill();
}
private function addListeners():void{
stage.addEventListener(Event.ADDED,updateLabel);
stage.addEventListener(Event.RESIZE,updateLabel);
}
private function updateLabel(e:Event):void{
updateDisplay();
drawBackground();
drawMask();
}
private function updateDisplay():void{
var tf:TextField = displayTextField;
tf.text = ("{" + this.stage.stageWidth + ";" + this.stage.stageHeight + "}");
}
}
}
于 2016-04-24T14:35:53.703 回答