基于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);
}
- 基于as3.0的简单版的相册[通过面向对象的思路实现]
- AS3.0学习日记 -- 很简单的面向对象小游戏
- 简单相册的实现
- JavaScript面向对象的思路
- 一个基于注解的orm简单实现(二):实现思路
- Android实现简单的相册
- 通过javascript中的new认识基于原型的面向对象。
- 基于HTML5的简单的面向对象的图表库
- AS3.0五子棋的AI思路
- 简单的面向对象
- iOS_基于ScrollView的一个简单相册
- 基于Unity3D的相册系统的实现
- AS3中简单的一般对象池
- 面向对象实现简单版的超级马里奥
- 基于面向对象的轮播图
- 面向对象的实现
- 面向对象的实现
- AS3面向对象的特性,其中包括了dynamic解释
- 会旋转的星状图
- C++项目中的extern "C" {}
- 2011年第一篇博文!
- 新年快乐
- Html parser 访问好友
- 基于as3.0的简单版的相册[通过面向对象的思路实现]
- 天道酬勤 - 从头细数来时路(Eygle的职业生涯)
- 委托简单例子
- Flash的简单缓动
- abap字符串控制函数
- ServiceMix做代理服务器发布WebService(附带案例源码)
- 人生就是如此-Biti的职业生涯与思考(一)
- #pragma once与 #ifndef的区别 (转)
- 归纳和演绎