基于as3.0的简单版的相册[通过面向对象的思路实现]

来源:互联网 发布:云计算需要什么基础 编辑:程序博客网 时间:2024/06/04 20:57

学习Flash As3.0,实现了一个非常简易版的电子相册,没有做任何过渡,完全就是通过面向对象的思路实现,代码实现较为粗糙,仅为锻炼一下flash的面向对象和事件处理。

实现步骤:

1、创建PhotoAblum类

    属性如下:

 

 private var photos:Array;//一组照片对象

private var index:Number = 1;

private var loader:Loader;

private var bitmap:Bitmap;//存储图像的Bitmap。方便控制图像的大小

private var bitWidth:Number;

private var bitHeight:Number;

 

private var nextBtn:MyButton;

private var prevBtn:MyButton;

private var subBtn:MyButton;

2、创建了一个MyButton类,专门生成一个简单的按钮

构造函数中通过createButton创建一个简单的按钮,传入了按钮的颜色,宽度和高度

 

public function MyButton(bw:Number,bh:Number,text:String)

{

this.upState = createButton(0xffffff,bw,bh,text);

this.overState = createButton(0xffff00,bw,bh,text);

           this.downState = createButton(0xff0000,bw,bh,text);

           this.hitTestState = this.upState;

}

createButton函数

 

public function createButton(color:uint,bw:Number,bh:Number,text:String):Sprite {

var rect:Sprite = new Sprite();

rect.graphics.beginFill(color);

rect.graphics.drawRect(0,0,bw,bh);

rect.graphics.endFill();

var tf:TextField = new TextField();

tf.text = text;

tf.height = rect.height-10;

tf.y = 5;

tf.autoSize = TextFieldAutoSize.CENTER;

rect.addChild(tf);

return rect;

}

 

 

 

 

3、实现PhotoAblum类中的方法

核心方法是:next,prev,showPhotoAt,这三个方法用来根据当前的索引访问相册中的照片

 

/*

*显示第_index张照片,从1开始 

*/

public function showPhotoAt(_index:Number):void {

if(_index>photos.length) {

index = 1;

} else if(_index<=0) {

index = 1;

} else {

index = _index;

}

var name:String = photos[index-1];

loadImg(name);

}

 

public function next(event:MouseEvent):void {

trace(index);

if(index>=photos.length) {

index = 0;

} else {

index +=1;

}

showPhotoAt(index);

}

 

public function prev(event:MouseEvent):void {

trace(index);

if(index<=1) {

index = photos.length;

} else {

index -= 1;

}

showPhotoAt(index);

}

 

private function loadImg(url:String):void {

loader.unload();

loader.load(new URLRequest(url));

loader.contentLoaderInfo.addEventListener(Event.OPEN,open);

loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,progess);

loader.contentLoaderInfo.addEventListener(Event.COMPLETE,loadComplete);

}

 

private function open(event:Event):void {

//trace("open");

}

 

private function progess(event:ProgressEvent):void {

var percent:Number = event.bytesLoaded / event.bytesTotal * 100;

//trace(percent);

}

 

private function loadComplete(event:Event):void {

addChild(loader);

bitmap = Bitmap(loader.content);

bitmap.width = this.bitWidth;

bitmap.height = this.bitHeight;

bitmap.x = (stage.stageWidth-bitmap.width)/2;

bitmap.y = (stage.stageHeight-bitmap.height)/2;

 

prevBtn = new MyButton(100,30,"上一张");

addChild(prevBtn);

prevBtn.y = bitmap.y+bitmap.height+20;

prevBtn.x = bitmap.x;

prevBtn.addEventListener(MouseEvent.MOUSE_DOWN,prev);

 

input = new TextField();

input.type = TextFieldType.INPUT;

input.border = true;

input.height = prevBtn.height;

input.width = prevBtn.width;

input.y = bitmap.y+bitmap.height+20;

input.x = (bitmap.x+bitmap.width+input.width)/2;

addChild(input);

 

subBtn = new MyButton(100,30,"确定");

addChild(subBtn);

subBtn.y = bitmap.y+bitmap.height+20;

subBtn.x = input.x+input.width+20;

subBtn.addEventListener(MouseEvent.MOUSE_DOWN,gotoPhoto);

 

nextBtn = new MyButton(100,30,"下一张");

addChild(nextBtn);

nextBtn.y = bitmap.y+bitmap.height+20;

nextBtn.x = bitmap.x+bitmap.width-nextBtn.width;

nextBtn.addEventListener(MouseEvent.MOUSE_DOWN,next);

 

 

}

 

private function gotoPhoto(event:Event):void {

if(isNaN(parseInt(input.text))) {

index = 0;

} else {

index = parseInt(input.text);

}

input.text = "";

showPhotoAt(index);

}

原创粉丝点击