效果演示:(IE8下可正常浏览)
下载地址:/Files/zhoujunfeng2011/SWF/Test.swf
各位朋友可下载到本地进行缩放窗口进行测试!
源码:
Main.as:
package
{
import flash.display.Sprite;
import flash.display.Loader;
import flash.events.Event;
import flash.net.URLRequest;
import flash.display.Bitmap;
import flash.events.MouseEvent;
import flash.text.TextField;
import flash.text.TextFormat;
import flash.display.StageScaleMode;
import flash.display.Shape;
import Effters.loading;
import flash.events.IOErrorEvent;
public class Main extends Sprite
{
//首次加载的图片url
private var url:String = "http://******????????";
//后续加载的图片url
private var _URL:String = "http://******??????";
private var _URL2:String = ".*????????";
private var LoadURL:String;
private var loader:Loader;
private var test:Sprite = new Sprite();
private var stage_width:Number;
private var stage_height:Number;
private var test_width:Number;
private var test_height:Number;
private var _X:TextField = new TextField();
private var _Y:TextField = new TextField();
private var _W:TextField = new TextField();
private var _H:TextField = new TextField();
private var _RECT:TextField = new TextField();
private var _F:TextFormat = new TextFormat();
private var ErrorText:TextField = new TextField();
private var rect:Shape = new Shape();
private var loadingeffters:loading;
private var upbtn:Sprite;
private var downbtn:Sprite;
private var index:int = 0;
public function Main():void
{
init();
}
private function init():void
{
stage.scaleMode = StageScaleMode.NO_SCALE;
stage_width = this.stage.stageWidth;
stage_height = this.stage.stageHeight;
rect.graphics.beginFill(0xffff00,0.6);
rect.graphics.drawRect(0,0,20,20);
rect.graphics.endFill();
addChild(rect);
rect.y = this.stage.stageHeight - rect.height;
_F.color = 0xffffff;
_F.size = 14;
_X.text = "鼠标X轴:" + "0";
_Y.text = "鼠标Y轴:" + "0";
_W.text = "当前舞台宽度:" + this.stage.stageWidth;
_H.text = "当前舞台高度:" + this.stage.stageHeight;
_RECT.text = "方块X、Y:" + rect.x + "," + rect.y;
_X.setTextFormat(_F);
_Y.setTextFormat(_F);
_W.setTextFormat(_F);
_H.setTextFormat(_F);
_RECT.setTextFormat(_F);
addChild(_X);
addChild(_Y);
addChild(_W);
addChild(_H);
addChild(_RECT);
_X.y = 10;
_Y.y = 30;
_W.y = 50;
_H.y = 70;
_RECT.y = 90;
_X.height = 20;
_Y.height = 20;
_W.height = 20;
_H.height = 20;
_RECT.height = 20;
_W.width = 150;
_H.width = 150;
_RECT.width = 150;
upbtn = Draws(40,15,6,0xFF99FF);
downbtn = Draws(40,15,6,0xFFCCFF);
//添加按钮
addChild(downbtn);
downbtn.x = rect.x + 25;
downbtn.y = this.stage.stageHeight - 20;
downbtn.buttonMode = true;
addChild(upbtn);
upbtn.x = downbtn.x + 45;
upbtn.y = downbtn.y;
upbtn.buttonMode = true;
var upbtntext:TextField = new TextField();
var downbtntext:TextField = new TextField();
upbtntext.text = "下一张";
upbtntext.width = 40;
downbtntext.text = "上一张";
downbtntext.width = 40;
upbtn.addChild(upbtntext);
downbtn.addChild(downbtntext);
upbtntext.y = downbtntext.y = -2;
upbtntext.selectable = downbtntext.selectable = false;
upbtntext.mouseEnabled = downbtntext.mouseEnabled = false;
//监听舞台改变尺寸事件
this.stage.addEventListener(Event.RESIZE,ReSizeHalder);
//监听鼠标移动事件;
this.stage.addEventListener(MouseEvent.MOUSE_MOVE,MoveHalder);
//监听鼠标点击按钮事件;
upbtn.addEventListener(MouseEvent.CLICK,up_click);
downbtn.addEventListener(MouseEvent.CLICK,down_click);
ErrorText.y = 110;
ErrorText.height = 20;
ErrorText.width = 200;
ErrorText.textColor = 0xffffff;
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,com);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,error);
loader.load(new URLRequest(url));
ErrorText.text = "图片加载中...";
addChild(ErrorText);
//添加loading效果
loadingeffters = new loading();
addChild(loadingeffters);
loadingeffters.x = stage.stageWidth / 3.5;
loadingeffters.y = stage.stageHeight / 3.5;
}
private function error(evt:IOErrorEvent):void
{
removeChild(loadingeffters);
ErrorText.textColor = 0xFF0000;
ErrorText.text = "图片加载失败";
loader.unload();
loader = null;
}
private function com(evt:Event):void
{
//移除loader监听事件
ErrorText.text = "";
loader.contentLoaderInfo.removeEventListener(Event.COMPLETE,com);
loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR,error);
//加载完成,移除loading效果;
removeChild(loadingeffters);
//显示图片等
var bitmap:Bitmap = Bitmap(loader.content);
test.addChild(bitmap);
test_width = test.width;
test_height = test.height;
addChild(test);
//设置图片大小位置
setvideosize(test,stage_width,stage_height,this.stage.stageWidth,this.stage.stageHeight,test_width,test_height);
loader.unload();
loader = null;
}
private function MoveHalder(evt:MouseEvent):void
{
_X.text = "鼠标X轴:" + this.mouseX;
_Y.text = "鼠标Y轴:" + this.mouseY;
_X.setTextFormat(_F);
_Y.setTextFormat(_F);
}
private function ReSizeHalder(evt:Event):void
{
rect.x = (stage_width - this.stage.stageWidth)/2;
rect.y = (stage_height - this.stage.stageHeight)/2 + this.stage.stageHeight - rect.height;
downbtn.x = (stage_width - this.stage.stageWidth)/2 + 25;
downbtn.y = (stage_height - this.stage.stageHeight)/2 + this.stage.stageHeight - 20;
upbtn.x = downbtn.x + 45;
upbtn.y = downbtn.y;
if (loadingeffters.parent != true)
{
loadingeffters.x = this.stage.stageWidth / 3.5;
loadingeffters.y = this.stage.stageHeight / 3.5;
}
_W.text = "当前舞台宽度:" + this.stage.stageWidth;
_H.text = "当前舞台高度:" + this.stage.stageHeight;
_RECT.text = "方块X、Y:" + rect.x + "," + rect.y;
_W.setTextFormat(_F);
_H.setTextFormat(_F);
_RECT.setTextFormat(_F);
setvideosize(test,stage_width,stage_height,this.stage.stageWidth,this.stage.stageHeight,test_width,test_height);
}
private function setvideosize(video:Sprite,stage_width:Number,stage_height:Number,StageWidth:Number,StageHeight:Number,loadvideowidth:Number, loadvideoheight:Number):void
{
if ((loadvideowidth / loadvideoheight) > (StageWidth / StageHeight))
{
video.width = StageWidth;
video.height = StageWidth / (loadvideowidth / loadvideoheight);
video.x = (stage_width - StageWidth)/2;
video.y = (stage_height - StageHeight)/2 + Math.abs((StageHeight - video.height)/2);
}
else if ((loadvideowidth / loadvideoheight) < (StageWidth / StageHeight))
{
video.height = StageHeight;
video.width = StageHeight * (loadvideowidth / loadvideoheight);
video.x = (stage_width - StageWidth)/2 + (Math.abs(StageWidth - video.width)/2);
video.y = (stage_height - StageHeight)/2;
}
else if ((loadvideowidth / loadvideoheight) == (StageWidth / StageHeight))
{
video.width = StageWidth;
video.height = StageHeight;
video.x = (stage_width - StageWidth)/2;
video.y = (stage_height - StageHeight)/2;
}
}
private function Draws(drawwidth:Number,drawheight:Number,ellipseWidth:Number,colors:uint):Sprite
{
var drawsprite:Sprite = new Sprite();
drawsprite.graphics.beginFill(colors,0.8);
drawsprite.graphics.drawRoundRect(0,0,drawwidth,drawheight,ellipseWidth);
drawsprite.graphics.endFill();
return drawsprite;
}
private function up_click(evt:MouseEvent):void
{
if (loader == null)
{
index--;
if (index < 1)
{
index = 26;
}
loadpictures();
}
}
private function down_click(evt:MouseEvent):void
{
if (loader == null)
{
index++;
if (index > 26)
{
index = 1;
}
loadpictures();
}
}
private function loadpictures():void
{
LoadURL = _URL + index + _URL2;
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,piccom);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,error);
loader.load(new URLRequest(LoadURL));
ErrorText.textColor = 0xffffff;
ErrorText.text = "图片加载中...";
//添加loading特效
if (loadingeffters.parent == null)
{
addChild(loadingeffters);
}
}
private function piccom(evt:Event):void
{
ErrorText.text = "";
loader.contentLoaderInfo.removeEventListener(Event.COMPLETE,piccom);
loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR,error);
if (loadingeffters.parent != null)
{
removeChild(loadingeffters);
}
var bitmap:Bitmap = Bitmap(loader.content);
if (test.numChildren != 0)
{
test.removeChildAt(0);
}
this.addChildAt(test,this.parent.numChildren -1);
test.addChild(bitmap);
test_width = test.width;
test_height = test.height;
setvideosize(test,stage_width,stage_height,this.stage.stageWidth,this.stage.stageHeight,test_width,test_height);
if (loader != null)
{
loader.unload();
loader = null;
}
}
}
}
{
import flash.display.Sprite;
import flash.display.Loader;
import flash.events.Event;
import flash.net.URLRequest;
import flash.display.Bitmap;
import flash.events.MouseEvent;
import flash.text.TextField;
import flash.text.TextFormat;
import flash.display.StageScaleMode;
import flash.display.Shape;
import Effters.loading;
import flash.events.IOErrorEvent;
public class Main extends Sprite
{
//首次加载的图片url
private var url:String = "http://******????????";
//后续加载的图片url
private var _URL:String = "http://******??????";
private var _URL2:String = ".*????????";
private var LoadURL:String;
private var loader:Loader;
private var test:Sprite = new Sprite();
private var stage_width:Number;
private var stage_height:Number;
private var test_width:Number;
private var test_height:Number;
private var _X:TextField = new TextField();
private var _Y:TextField = new TextField();
private var _W:TextField = new TextField();
private var _H:TextField = new TextField();
private var _RECT:TextField = new TextField();
private var _F:TextFormat = new TextFormat();
private var ErrorText:TextField = new TextField();
private var rect:Shape = new Shape();
private var loadingeffters:loading;
private var upbtn:Sprite;
private var downbtn:Sprite;
private var index:int = 0;
public function Main():void
{
init();
}
private function init():void
{
stage.scaleMode = StageScaleMode.NO_SCALE;
stage_width = this.stage.stageWidth;
stage_height = this.stage.stageHeight;
rect.graphics.beginFill(0xffff00,0.6);
rect.graphics.drawRect(0,0,20,20);
rect.graphics.endFill();
addChild(rect);
rect.y = this.stage.stageHeight - rect.height;
_F.color = 0xffffff;
_F.size = 14;
_X.text = "鼠标X轴:" + "0";
_Y.text = "鼠标Y轴:" + "0";
_W.text = "当前舞台宽度:" + this.stage.stageWidth;
_H.text = "当前舞台高度:" + this.stage.stageHeight;
_RECT.text = "方块X、Y:" + rect.x + "," + rect.y;
_X.setTextFormat(_F);
_Y.setTextFormat(_F);
_W.setTextFormat(_F);
_H.setTextFormat(_F);
_RECT.setTextFormat(_F);
addChild(_X);
addChild(_Y);
addChild(_W);
addChild(_H);
addChild(_RECT);
_X.y = 10;
_Y.y = 30;
_W.y = 50;
_H.y = 70;
_RECT.y = 90;
_X.height = 20;
_Y.height = 20;
_W.height = 20;
_H.height = 20;
_RECT.height = 20;
_W.width = 150;
_H.width = 150;
_RECT.width = 150;
upbtn = Draws(40,15,6,0xFF99FF);
downbtn = Draws(40,15,6,0xFFCCFF);
//添加按钮
addChild(downbtn);
downbtn.x = rect.x + 25;
downbtn.y = this.stage.stageHeight - 20;
downbtn.buttonMode = true;
addChild(upbtn);
upbtn.x = downbtn.x + 45;
upbtn.y = downbtn.y;
upbtn.buttonMode = true;
var upbtntext:TextField = new TextField();
var downbtntext:TextField = new TextField();
upbtntext.text = "下一张";
upbtntext.width = 40;
downbtntext.text = "上一张";
downbtntext.width = 40;
upbtn.addChild(upbtntext);
downbtn.addChild(downbtntext);
upbtntext.y = downbtntext.y = -2;
upbtntext.selectable = downbtntext.selectable = false;
upbtntext.mouseEnabled = downbtntext.mouseEnabled = false;
//监听舞台改变尺寸事件
this.stage.addEventListener(Event.RESIZE,ReSizeHalder);
//监听鼠标移动事件;
this.stage.addEventListener(MouseEvent.MOUSE_MOVE,MoveHalder);
//监听鼠标点击按钮事件;
upbtn.addEventListener(MouseEvent.CLICK,up_click);
downbtn.addEventListener(MouseEvent.CLICK,down_click);
ErrorText.y = 110;
ErrorText.height = 20;
ErrorText.width = 200;
ErrorText.textColor = 0xffffff;
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,com);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,error);
loader.load(new URLRequest(url));
ErrorText.text = "图片加载中...";
addChild(ErrorText);
//添加loading效果
loadingeffters = new loading();
addChild(loadingeffters);
loadingeffters.x = stage.stageWidth / 3.5;
loadingeffters.y = stage.stageHeight / 3.5;
}
private function error(evt:IOErrorEvent):void
{
removeChild(loadingeffters);
ErrorText.textColor = 0xFF0000;
ErrorText.text = "图片加载失败";
loader.unload();
loader = null;
}
private function com(evt:Event):void
{
//移除loader监听事件
ErrorText.text = "";
loader.contentLoaderInfo.removeEventListener(Event.COMPLETE,com);
loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR,error);
//加载完成,移除loading效果;
removeChild(loadingeffters);
//显示图片等
var bitmap:Bitmap = Bitmap(loader.content);
test.addChild(bitmap);
test_width = test.width;
test_height = test.height;
addChild(test);
//设置图片大小位置
setvideosize(test,stage_width,stage_height,this.stage.stageWidth,this.stage.stageHeight,test_width,test_height);
loader.unload();
loader = null;
}
private function MoveHalder(evt:MouseEvent):void
{
_X.text = "鼠标X轴:" + this.mouseX;
_Y.text = "鼠标Y轴:" + this.mouseY;
_X.setTextFormat(_F);
_Y.setTextFormat(_F);
}
private function ReSizeHalder(evt:Event):void
{
rect.x = (stage_width - this.stage.stageWidth)/2;
rect.y = (stage_height - this.stage.stageHeight)/2 + this.stage.stageHeight - rect.height;
downbtn.x = (stage_width - this.stage.stageWidth)/2 + 25;
downbtn.y = (stage_height - this.stage.stageHeight)/2 + this.stage.stageHeight - 20;
upbtn.x = downbtn.x + 45;
upbtn.y = downbtn.y;
if (loadingeffters.parent != true)
{
loadingeffters.x = this.stage.stageWidth / 3.5;
loadingeffters.y = this.stage.stageHeight / 3.5;
}
_W.text = "当前舞台宽度:" + this.stage.stageWidth;
_H.text = "当前舞台高度:" + this.stage.stageHeight;
_RECT.text = "方块X、Y:" + rect.x + "," + rect.y;
_W.setTextFormat(_F);
_H.setTextFormat(_F);
_RECT.setTextFormat(_F);
setvideosize(test,stage_width,stage_height,this.stage.stageWidth,this.stage.stageHeight,test_width,test_height);
}
private function setvideosize(video:Sprite,stage_width:Number,stage_height:Number,StageWidth:Number,StageHeight:Number,loadvideowidth:Number, loadvideoheight:Number):void
{
if ((loadvideowidth / loadvideoheight) > (StageWidth / StageHeight))
{
video.width = StageWidth;
video.height = StageWidth / (loadvideowidth / loadvideoheight);
video.x = (stage_width - StageWidth)/2;
video.y = (stage_height - StageHeight)/2 + Math.abs((StageHeight - video.height)/2);
}
else if ((loadvideowidth / loadvideoheight) < (StageWidth / StageHeight))
{
video.height = StageHeight;
video.width = StageHeight * (loadvideowidth / loadvideoheight);
video.x = (stage_width - StageWidth)/2 + (Math.abs(StageWidth - video.width)/2);
video.y = (stage_height - StageHeight)/2;
}
else if ((loadvideowidth / loadvideoheight) == (StageWidth / StageHeight))
{
video.width = StageWidth;
video.height = StageHeight;
video.x = (stage_width - StageWidth)/2;
video.y = (stage_height - StageHeight)/2;
}
}
private function Draws(drawwidth:Number,drawheight:Number,ellipseWidth:Number,colors:uint):Sprite
{
var drawsprite:Sprite = new Sprite();
drawsprite.graphics.beginFill(colors,0.8);
drawsprite.graphics.drawRoundRect(0,0,drawwidth,drawheight,ellipseWidth);
drawsprite.graphics.endFill();
return drawsprite;
}
private function up_click(evt:MouseEvent):void
{
if (loader == null)
{
index--;
if (index < 1)
{
index = 26;
}
loadpictures();
}
}
private function down_click(evt:MouseEvent):void
{
if (loader == null)
{
index++;
if (index > 26)
{
index = 1;
}
loadpictures();
}
}
private function loadpictures():void
{
LoadURL = _URL + index + _URL2;
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,piccom);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,error);
loader.load(new URLRequest(LoadURL));
ErrorText.textColor = 0xffffff;
ErrorText.text = "图片加载中...";
//添加loading特效
if (loadingeffters.parent == null)
{
addChild(loadingeffters);
}
}
private function piccom(evt:Event):void
{
ErrorText.text = "";
loader.contentLoaderInfo.removeEventListener(Event.COMPLETE,piccom);
loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR,error);
if (loadingeffters.parent != null)
{
removeChild(loadingeffters);
}
var bitmap:Bitmap = Bitmap(loader.content);
if (test.numChildren != 0)
{
test.removeChildAt(0);
}
this.addChildAt(test,this.parent.numChildren -1);
test.addChild(bitmap);
test_width = test.width;
test_height = test.height;
setvideosize(test,stage_width,stage_height,this.stage.stageWidth,this.stage.stageHeight,test_width,test_height);
if (loader != null)
{
loader.unload();
loader = null;
}
}
}
}
loading效果,可以在我前面发的几篇文章中查看,以上效果仅供参考...