FLASH論壇-Flash之神魂顛倒Adobe Flash 大家園Flash教學/下載分享區Flash FLA模板/範例區 → 可客製介面,可緩衝顯示的窗體類

MSDN 研討會資料下載 熱門租屋行情 網路行銷秘訣大公開 磷蝦油=比魚油更強 Microsoft Silverlight
減肥診所 雷射抽脂 ASP.NET完全攻略與快速上手 買墨水送神幣喔 貸款
近視雷射手術 電波拉皮 網路創業 SEO 當鋪
投影機 公仔 過敏 調整型內衣 白蟻
氣球 眼袋 虛擬主機神魂特惠 大陸新娘 NCCU集中營
網頁設計 愛情城市 落健 液晶電視

  共有1784人閱讀過本文章折疊列印

主題:可客製介面,可緩衝顯示的窗體類

帥哥喲,離線,有人找我嗎?
TWG
  1樓 個人化首頁 | QQ | 個人資料 | 搜尋 | EMAIL | 首頁 | |

加到: FunP 書籤加到: 黑米書籤加到: MyShare 書籤加到: 美味書籤加到: Furl  書籤加到: YaHoo 分享書籤加到: Google 書籤加到: UDN 書籤加到: Technorati 書籤



加好友 悄悄話 •神•魂•顛•倒•
等級:站長 文章:2453 經驗:24084 威望:7 精華:7 註冊:2002-4-12 15:57:00
  發表心情 Post By:2006-11-26 1:26:00



可客製介面,可緩衝顯示的窗體類

來源:
http://www.klstudio.com/post/97.html

已經好久沒有寫as程式碼了,今天寫了一個可客製介面,可緩衝移動位置,可緩衝改變大小的窗體類,採用as2.0方式!同時可以載入外部SWF檔案,這次我提供相關源檔案,方便大家去研究,也可以在我寫的類基礎修改也行!如要轉載請留下一個原檔案地址吧!

以下內容為程序代碼:

//核心程式碼;

class as.Win extends MovieClip {

private var tl_mc:MovieClip;
private var tc_mc:MovieClip;
private var tr_mc:MovieClip;
private var cl_mc:MovieClip;
private var cc_mc:MovieClip;
private var cr_mc:MovieClip;
private var bl_mc:MovieClip;
private var bc_mc:MovieClip;
private var br_mc:MovieClip;
private var title_txt:TextField;
private var content_mc:MovieClip;
private var load_mc:MovieClip;
//------------------------------------------------;
private var width:Number;
private var height:Number;
//------------------------------------------------;
private var move_mar:Number;
private var size_mar:Number;
private var speed:Number;
private var _ddw:Number;
private var _ddh:Number;
private var _ddx:Number;
private var _ddy:Number;
//------------------------------------------------;
function Win() {
this.setSize(200, 100);
this.move(this._x, this._y);
this.setSpeed(5);
this.setTitle("無標題");
}
public function setSize(w:Number, h:Number):Void {
clearInterval(this.size_mar);
w = Math.max(w, this.tl_mc._width+this.tr_mc._width);
this.width = Math.max(w, this.bl_mc._width+this.br_mc._width);
this.height = h;
this.draw(this.width, this.height);
}
public function getWidth():Number {
return this.width;
}
public function getHeight():Number {
return this.height;
}
public function setTitle(title:String):Void{
this.title_txt.text = title;
}
public function loadSwf(url:String):Void{
this.content_mc = this.createEmptyMovieClip("hand_mc",5);
this.content_mc._x = this.cc_mc._x;
this.content_mc._y = this.cc_mc._y;
this.content_mc.loadMovie(url);
}
public function removeSwf():Void{
this.content_mc.removeMovieClip();
}
private function draw(w:Number, h:Number):Void {
this.tl_mc._x = this.cl_mc._x=this.bl_mc._x=0;
this.tl_mc._y = this.tc_mc._y=this.tr_mc._y=0;
this.tc_mc._x = this.tl_mc._x+this.tl_mc._width;
this.tc_mc._width = w+this.cl_mc._width+this.cr_mc._width-this.tl_mc._width-this.tr_mc._width;
this.title_txt._x = this.tc_mc._x;
this.title_txt._width = this.tc_mc._width;
this.tr_mc._x = this.tc_mc._x+this.tc_mc._width;
this.cl_mc._y = this.cc_mc._y=this.cr_mc._y=this.tl_mc._y+this.tl_mc._height;
this.cl_mc._height = this.cc_mc._height=this.cr_mc._height=h;
this.cc_mc._x = this.cl_mc._x+this.cl_mc._width;
this.cc_mc._width = w;
this.cr_mc._x = this.cc_mc._x+this.cc_mc._width;
this.bl_mc._y = this.bc_mc._y=this.br_mc._y=this.cl_mc._y+this.cl_mc._height;
this.bc_mc._x = this.bl_mc._x+this.bl_mc._width;
this.bc_mc._width = w+this.cl_mc._width+this.cr_mc._width-this.bl_mc._width-this.br_mc._width;
this.br_mc._x = this.bc_mc._x+this.bc_mc._width;
}
public function setSpeed(speed:Number):Void {
this.speed = speed;
}
public function moveSize(w:Number,h:Number,showed:Boolean):Void {
if(showed == undefined){
showed = false;
}
w = Math.max(w, this.tl_mc._width+this.tr_mc._width);
this._ddw = Math.max(w, this.bl_mc._width+this.br_mc._width);
this._ddh = h;
this.content_mc._visible = showed;
clearInterval(this.size_mar);
this.size_mar = setInterval(this, "moveSizeAction", 50);
}
private function moveSizeAction() {
var dw:Number = this.cc_mc._width - this._ddw;
var dh:Number = this.cc_mc._height - this._ddh;
var ow:Number = dw/this.speed;
var oh:Number = dh/this.speed;
this.draw(this.cc_mc._width-ow,this.cc_mc._height-oh);
if(Math.abs(dw)<1 && Math.abs(dh)<1){
this.content_mc._visible = true;
this.setSize(this._ddw,this._ddh);
}
}
public function moveTo(x:Number,y:Number):Void {
this._ddx = Math.round(x);
this._ddy = Math.round(y);
clearInterval(this.move_mar);
this.move_mar = setInterval(this, "moveToAction", 50);
}
private function moveToAction() {
var dx:Number = this._x - this._ddx;
var dy:Number = this._y - this._ddy;
var ox:Number = dx/this.speed;
var oy:Number = dy/this.speed;
this._x -= ox;
this._y -= oy;
if(Math.abs(dx)<1 && Math.abs(dy)<1){
this.move(this._ddx,this._ddy);
}
}
public function move(x:Number, y:Number):Void {
this._x = Math.round(x);
this._y = Math.round(y);
clearInterval(this.move_mar);
}
}


程式碼實例效果:/demo/as/win/Win.html

相關資料檔案:win.rar


網路的事情,讓網路解決

[ 逛網路就像是在探險 ]

    神 魂 顛 倒 T W G

http://bbs.flash2u.com.tw

http://tw.myblog.yahoo.com/flash2u-twg

http://flash-silverlight.blogspot.com/

http://flash2u.spaces.live.com/?_c02_owner=1
網頁設計 支持(0中立(0反對(0回到頂部
帥哥喲,離線,有人找我嗎?
filmspy
  2樓 個人化首頁 | 個人資料 | 搜尋 | EMAIL | 首頁 | |

加到: FunP 書籤加到: 黑米書籤加到: MyShare 書籤加到: 美味書籤加到: Furl  書籤加到: YaHoo 分享書籤加到: Google 書籤加到: UDN 書籤加到: Technorati 書籤



加好友 悄悄話 間諜
等級:論壇遊民 文章:152 經驗:55 威望:0 精華:0 註冊:2005-3-28 2:26:00
  發表心情 Post By:2006-11-27 15:45:00

我最想要的窗體介面,但是沒有我要的功能...
1.可手動拖曳窗體
2.可改變窗體縮放大小
3.關閉窗體按鈕
4.可縮到最小化或最大化的窗體
5.FLASH+XML
就像微軟窗體一樣...

我看了這個範例,窗體內四個按鈕控制窗體不是我想要的,
目前正在製作中...


1.文章若有問題,歡迎寫信給我....

2.附帶檔案正常無失連,放心下載....

3.密碼隱藏在文章裡,必須回覆後才看到...

我平常都上神魂顛倒論壇~~~~~

最佳化設計-影諜工作室   (我叫間諜,多多指教~)

網路創業 支持(0中立(0反對(0回到頂部