Flash使用bitmapData打造随机凹凸拼图效果_Flash教程
教程Tag:暂无Tag,欢迎添加,赚取U币!
缂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鎯у⒔閹虫捇鈥旈崘顏佸亾閿濆簼绨奸柟鐧哥秮閺岋綁顢橀悙鎼闂傚洤顦甸弻銊モ攽閸℃瑥鈷堥梺鎼炲€曢ˇ鎵崲濞戞﹩鍟呮い鏃囧吹閸戝綊姊洪崫鍕櫤缂佽鐗撳璇测槈濮橆偅鍕冮梺缁樺姦閸撴稑鈻撻妶澶嬧拺闁告稑锕ラ埛鎺楁煛娴e憡鎲告俊鍙夊姍楠炴ḿ鈧稒锚椤庢捇姊洪崷顓犲笡閻㈩垰锕ョ粩鐔煎即閵忊檧鎷绘繛杈剧导鐠€锕傚绩閺夋5鐟扳堪鎼粹€斥拫濡炪們鍨洪〃濠呯熅闂佺粯绋撻¨鈧琒闂傚倸鍊搁崐鎼佸磹閹间礁纾圭€瑰嫭鍣磋ぐ鎺戠倞鐟滃繘寮抽敃鍌涚厽闁靛繆鎳氶崷顓犵幓婵°倕鎳忛悡娆撴煙濞堝灝鏋涙い锝呫偢閺屾稓鈧絽澧庣弧鈧梺鍝勬湰濞叉ê顕ラ崟顖氶唶婵犻潧妫楅ˉ娆愮節閻㈤潧浠﹂柛銊﹀劶瑜版粓姊虹悰鈥充壕婵炲濮撮鍡涘磹閻㈠憡鐓ユ繝闈涙閺嗘瑥鈹戦敍鍕幋闁哄本绋撻埀顒婄秵閸嬪懎鐣峰畝鈧埀顒冾潐濞叉ḿ鏁敓鐘茬畺婵炲棙鎸搁拑鐔兼煏婢跺牆鍔滈柡鍡╀邯濮婂宕掑▎鎴М闂佸湱鈷堥崑鍕弲闂侀潧艌閺呮稓澹曟繝姘厽闁归偊鍠栭崝瀣煕婵犲倻浠涢柕鍥у楠炴帡宕卞鎯ь棜闂傚倷绀侀悿鍥綖婢舵劕鍨傞柛褎顨呯粻鏍ㄧ箾閸℃ɑ灏柣顓燁殔椤潡鎳滈惉顏呭灴閺佸秵绗熼埀顒€顫忕紒妯诲閻熸瑥瀚禒鈺呮⒑閸涘﹥鐓ラ梺甯到閻i攱瀵奸弶鎴濆敤閻熸粍绮撳畷鐢稿即閻愨晜鏂€闂佺粯锚绾绢參銆傞弻銉︾厸闁告侗鍠楅崐鎰版煛鐏炶濮傞柟顔哄€濆畷鎺戔槈濮楀棔绱�濠电姷鏁告慨鐑藉极閸涘﹥鍙忛柣鎴f閺嬩線鏌熼梻瀵割槮缁炬儳顭烽弻锝夊箛椤掍焦鍎撻梺鎼炲妼閸婂潡骞冪憴鍕闁瑰嘲鐭堥崝鍛攽閻愭彃鎮戦柣妤冨█楠炲啫鐣¢幍铏€婚棅顐㈡处閹尖晜瀵奸埀顒勬⒒娴h櫣甯涚紒璇插€块幃銉︾附缁嬭儻鎽曞┑鐐村灟閸ㄥ綊鎮炲ú顏呯厱闁规澘鍚€缁ㄥ瓨淇婇幓鎺斿ⅵ婵﹨娅g槐鎺懳熺拠鏌ョ€洪梻浣瑰濞插繘宕归挊澶樺殨濠电姵鑹鹃悘鎶芥煙妫颁胶顦﹂柟顔藉灴閺岀喖鎳栭埡鍕婂鏌嶈閸撴瑧澹曢銏╂晩闁硅揪闄勯埛鎺懨归敐鍥ㄥ殌闁崇粯娲熼弻锟犲焵椤掍焦缍囬柍鍝勫€瑰▓浼存⒑鐠恒劌鏋斿┑顔芥尦閹锋垿鎮㈤崗鑲╁帾婵犵數鍋熼崑鎾斥枍閸℃稒鐓曢悗锝庝簼椤ャ垽鏌$仦鍓с€掑ù鐙呯畵瀹曟粏顦俊鎻掔墕椤啴濡堕崨瀵稿椽闂佺懓鍤栭幏锟� 缂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁惧墽鎳撻—鍐偓锝庝簼閹癸綁鏌i鐐搭棞闁靛棙甯掗~婵嬫晲閸涱剙顥氶梻浣藉Г钃辩紒璇茬墕椤繐煤椤忓秵鏅㈤梺閫炲苯澧扮紒顔芥⒒閳ь剟娼ч幗婊堟偝缂佹ü绻嗛柕鍫濇噺閸f椽鏌i幘瀵告噰婵﹥妞介、姗€濡歌閺嗙姵绻濋埛鈧崶鈺冩毇闂佸搫琚崐婵嗩嚕閸洖绠伴幖绮光偓鍙夋▕闂傚倷绀侀幖顐﹀嫉椤掑嫭鍎庢い鏍ㄧ◥缁诲棝鏌i幋鐘垫憘闁轰礁锕弻锝夊箻閸愯尙妲板┑鐐跺瀹曠數妲愰幘璇茬<婵炲棙甯╅崬褰掓⒑缁嬫鍎愰柟鍛婃倐閳ワ箓宕稿Δ浣告疂闂傚倸鐗婄粙鎴︼綖瀹ュ鈷戠紓浣股戠亸顓㈡煕閻斿憡灏︾€殿喖顭峰鎾偄妞嬪海鐛梻浣稿閸嬪懐鎹㈤崒鐐┾偓鏍ㄥ緞閹邦厸鎷虹紓鍌欑劍宀h法绮婚妷銉冪懓饪版惔婵嬪仐閻庢鍠栭…鐑藉极閹版澘宸濇い蹇撴噺閺夋悂姊绘担鍛婅础闁稿鎸稿玻鍨枎閹垮啯鏅滈梺璺ㄥ櫐閹凤拷 闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁惧墽鎳撻—鍐偓锝庝簻椤掋垺銇勯幇顏嗙煓闁哄被鍔戦幃銏ゅ传閸曟垯鍨婚惀顏堝箚瑜滈悡濂告煛鐏炲墽娲寸€殿喗鎸虫俊鎼佸Ψ瑜夐崑鎾活敆閸曨剛鍘遍梺闈涱檧缁茶姤淇婇悾宀€纾界€广儱鎳忛崰姗€鏌$仦鐣屝х€规洦鍋婂畷鐔碱敃閿濆棭鍟€濠碉紕鍋戦崐褏鈧潧鐭傚畷瑙勬綇閳哄倸搴婂┑鐘绘涧椤戝懘锝為崨瀛樼叆婵犻潧妫欓ˉ鐘绘煏閸℃ê濮嶆慨濠冩そ瀹曨偊宕熼鐐╂嫛闂備礁鎲¢幐楣冨窗鎼淬劍鍋╃€瑰嫭瀚堥弮鍫濈劦妞ゆ帒瀚ㄩ崑鎴澝归崗鍏肩稇闂佸崬娲弻锝夊棘閹稿孩鍎撳Δ鐘靛仦閸旀瑥顫忕紒妯诲閻熸瑥瀚禒鈺呮⒑缁嬪灝鐦ㄩ柛銊ㄦ硾閻e嘲鈹戦崱鈺佹倯婵犮垼娉涢鍛村礈椤撱垺鈷戠痪顓炴噺瑜把囨⒒閸曨偄顏柛鈺傜洴楠炴帡骞嬮鐘叉暩闂佽崵濮惧▍锝囦焊閵娾晛绀夐柣鏃傚帶閺嬩線鏌涢鐘插姕闁抽攱鍨块弻娑樷攽閸℃浼傚銈庡亾缁犳捇寮诲☉娆戠瘈闁告劦浜滈埅鍦偓鍏夊亾闁挎繂鐗嗛崝鐢电磼閻樺磭鈽夐柍钘夘槸铻f繝褏鍋撳▍濠囨煛鐏炶濮傜€殿噮鍣e畷鎺戔堪閸愵亶鍋у┑锛勫亼閸婃垿宕曢懠顒傜煓闁规崘鍩栭~鏇㈡煙閹规劦鍤欑痪鎯у悑缁绘盯宕卞Ο铏逛淮婵犵鈧尙鐭欐慨濠冩そ瀹曨偊濡烽妷銈囨崟婵$偑鍊ら崢楣冨礂濮椻偓閹即顢欑捄銊ф澑濠电偞鍨堕悷锕€鈻嶉姀銈嗏拺閻犳亽鍔屽▍鎰版煙閸戙倖瀚� 闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾剧懓顪冪€n亝鎹i柣顓炴閵嗘帒顫濋敐鍛婵°倗濮烽崑鐐烘偋閻樻眹鈧線寮撮姀鈩冩珖闂侀€炲苯澧撮柟顔兼健椤㈡岸鍩€椤掑嫬钃熼柨婵嗘啒閺冨牆鐒垫い鎺戝閸嬪鈹戦悩鍙夋悙闁活厽顨婇悡顐﹀炊閵娧€濮囬梺缁樻尰閻熝呮閹惧瓨濯撮梻鍫熺〒娴犲ジ姊洪崫鍕靛剱缂佸甯楃粚杈ㄧ節閸ャ劌鈧兘鏌熷▓鍨灓闁绘挻鎹囧娲传閸曨偒妲甸梺閫炲苯澧柛鎾村哺瀹曘儳鈧綆鍠栫粻鍦磼椤旂厧甯ㄩ柛瀣崌閹崇娀顢楁担瑙勵仯闂傚倸鍊搁崐椋庣矆娓氣偓楠炲鏁撻悩顔瑰亾閸愵喖骞㈡繛鍡楃箲閻庢娊鎮楅獮鍨姎婵炶绠戦悾鐑藉矗婢跺瞼顔曢梺鐟扮摠閻熴儵鎮橀埡鍌ゆ闁绘劦浜滈悘顏勄庨崶褝韬い銏$☉閳规垿骞囬渚囧敳闂傚倸鍊搁崐鎼佀囬婊呯煋闁圭虎鍠栭悡姗€鏌熸潏鎯х槣闁轰礁顑夐弻娑㈠焺閸愵亝鍣柦鍐憾濮婄粯鎷呴崨濠傛殘濠殿喖锕ょ紞濠囧Υ閸愨晝绡€闁搞儜鍕氶梻渚€鈧偛鑻晶顖炴煏閸パ冾伃妤犵偞甯¢獮瀣攽閸モ晙澹曞┑鐘垫暩閸嬫盯宕ョ€n喖绀夋繛鍡樻尭閽冪喖鏌i弮鍌楁嫛闁轰礁锕弻銈吤圭€n偅鐝旈梺缁樻尵閸犳牠骞冨Δ鍐╁枂闁告洦鍓涢ˇ銊モ攽閻愯泛鐨洪柛鐘崇墪椤曪絾绻濆顒€鑰垮┑掳鍊曢敃銈夊箖閹达附鈷戦柛娑橈梗缁堕亶鏌涢妸锕€鈻曠€规洏鍨介、妤呭礋椤戣姤瀚藉┑鐐舵彧缂嶁偓濠殿喓鍊楀☉鐢稿醇閺囩喓鍘遍梺鎸庣箓缁绘帡鎮鹃崹顐闁绘劘灏欑粻濠氭煛娴h宕岄柡浣规崌閺佹捇鏁撻敓锟�,闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧湱鈧懓瀚崳纾嬨亹閹烘垹鍊炲銈嗗笂缁€渚€宕滈鐑嗘富闁靛牆妫楁慨褏绱掗悩鍐茬仼缂侇喖鐗忛埀顒婄秵閸嬩焦绂嶅⿰鍫熺厵闁逛絻娅曞▍鍛存煟韫囧﹥娅囬柟顕呭枛椤粓鍩€椤掆偓椤繒绱掑Ο璇差€撶紓浣圭☉椤戝懎鈻撻鐐╂斀妞ゆ梹鏋婚崗顒傜磼閻樿櫕宕岄柡浣瑰姍閹瑩寮堕幋鐘电嵁闂佽鍑界紞鍡涘礈濞戙埄鏁婇柡鍥╁枔缁♀偓闂佹眹鍨藉ḿ褍鐡梻浣呵归鍛涘┑鍡欐殾闁汇垻枪閸楁娊鏌曡箛銉х?闁告ê宕—鍐Χ閸℃衼缂備焦褰冩晶鐣屽垝閸儱鐒垫い鎺戝€荤壕钘壝归敐鍡楃祷濞存粓绠栧娲川婵犲倸顫呴梺鍝勫€搁崐鍦矉瀹ュ應鍫柛顐ゅ枔閸樻悂姊虹粙鎸庢拱婵ǜ鍔嶇粋鎺楀閵堝棛鍘靛銈嗘濡嫰鎮橀敃鍌涚厪闁搞儜鍐句紓缂備胶濮甸惄顖氼嚕閹绢喗鍊烽悗鐢电《閸嬫捇宕滆绾捐棄霉閿濆牊顏犻悽顖涚洴閺岋綁鍩℃繝鍌滀桓闂佺粯渚楅崰姘跺焵椤掑﹦绉甸柛鐘愁殜瀹曟劙鎮滈懞銉у幐婵犮垼娉涢鍛存倶閳哄倻绠鹃柛顐g☉閳ь剚绻傞~蹇曠磼濡顎撻梺鍛婄洴濞佳呯礊婵犲洢鈧線寮介鐐茶€垮┑鐐村灦宀e潡顢欐径鎰拺闁硅偐鍋涢崝鈧柣蹇曞仜婢х晫绮欐笟鈧缁樻媴閸涘﹤鏆堢紓浣筋嚙閸婂鍩€椤掍胶娈伴柛銉戝啫娈ら梺鐟板悑閻n亪宕濆澶嬪亗婵炲棙鍔戞禍婊堟煛瀹擃喖瀚峰Λ鐐烘煟鎼淬垹鍤柛鐘愁殘缁顓兼径妯绘櫆闂佸壊鍋嗛崯鍧楀箯缂佹ḿ绠鹃弶鍫濆⒔閸掍即鏌熺拠褏绡€鐎规洦鍨堕幃娆撴倻濡厧骞楅梻浣虹帛濮婄懓岣垮▎鎾崇闁靛牆顦伴悡娆愵殽閻愯尙浠㈤柣蹇婃櫊閹藉爼鏁愰崨顐熷亾閹烘埈娼╅柣鎾虫捣娴犫晛鈹戦悙鑼闁告柨绉堕幑銏犫攽鐎n偄浠洪梻鍌氱墛閸掆偓闁挎繂娲ㄥΛ顖炴煛婢跺孩纭堕弫鍫ユ倵濞堝灝鏋熼柣鎿勭節閻涱噣寮介妸锕€顎撻梺闈╁瘜閸樼厧顕i幎鑺モ拻濞达綀娅g敮娑欑箾閸欏澧电€规洘鍔欏畷鐑筋敇濞戞ü澹曞┑顔结缚閸嬫挾鈧熬鎷�!
推荐:FlashActionscript学习:MovieClipLoader深入研究
使用moviecliploader下载过多的位图会带来计算机网络连接的拥塞,即使使用unloadClip方法取消下载,仍然不会有好转,引起这个现象的原因与这个类的实现细节有关
下午没事做,就弄了个随机切拼图效果,还没做判定,只是个切法的计算,稍后整理下就应该是个成品,嘿嘿~原理主要就是用bitmap进行切图,以前都是用遮照做太占资源.效果如下:
主要代码:puzzle.as
* Puzzle CLASS
*
* @ CREATED BY: ycccc8202
* @ PURPOSE: 方便制作拼图游戏
* @ DATE:2007.6.10
* Usage example:
* var url:String = "http://pic.ent.tom.com/data2/upload/888/407/117984810018150686780.jpg";
* var puzzleuzzle = new Puzzle(this, url);
* 设置摆放位置
* puzzle.setPosition(30, 20);
* 设置行/列
* puzzle.setRowAndLine(30, 10);
*/
import com.ycccc.PuzzleGame.MovieClipDrag;
import mx.events.EventDispatcher;
import flash.display.BitmapData;
import flash.geom.Point;
import flash.geom.Matrix;
import flash.geom.Rectangle;
import flash.filters.BevelFilter;
class com.ycccc.PuzzleGame.Puzzle {
/**
* Private members
*/
//////////加载图片长宽///////////
private var _imageW:Number;
private var _imageH:Number;
//////////设置最大宽高///////////
private var _imageMaxW:Number = 800;
private var _imageMaxH:Number = 500;
////////////////////////////////
private var dispatchEvent:Function;
public var addEventListener:Function;
public var removeEventListener:Function;
////////////////////////////////
private var _oldURL:String;
private var _newURL:String;
private var _x:Number;
private var _y:Number;
private var _row:Number;
private var _line:Number;
private var _path:MovieClip;
private var _imageM:MovieClip;
private var _pieceBoard:MovieClip;
private var _imageLoader:MovieClipLoader;
private var _imageBitmap:BitmapData;
private var _pieceW:Number;
private var _pieceH:Number;
private var _pieceMinWH:Number;
private var _pieceD:Number;
///////////内切矩形宽高(通过矩形画近似椭圆)///////////
private var _pieceOW:Number;
private var _pieceOH:Number;
///////////////比例系数///////////////
private var _pieceD_k:Number = 10;
private var _pieceO_k:Number = 4;
private var _pieceOWH_k:Number = 3/4;
/////////////////////////////////
/**
* Constructor
*/
public function Puzzle(path:MovieClip, imageLink:String) {
EventDispatcher.initialize(this);
_path = path;
_newURL = imageLink;
_imageM = _path.createEmptyMovieClip("imageM", _path.getNextHighestDepth());
_imageLoader = new MovieClipLoader();
_imageLoader.addListener(this);
loadImage(_newURL);
}
/**
* Public methods
*/
public function set _url(url:String) {
loadImage(url);
}
public function get _url():String {
return _oldURL;
}
public function set row(r:Number) {
_row = r;
}
public function set line(l:Number) {
_line = l;
}
public function removeAllPiece() {
for (var all in _pieceBoard) {
_pieceBoard[all].removeMovieClip();
}
}
public function bitmapCut() {
pieceSet();
removeAllPiece();
for (var i:Number = 0; i<_row; i ) {
for (var j:Number = 0; j<_line; j ) {
var Piece = _pieceBoard.createEmptyMovieClip("iece" (_line*i j), _pieceBoard.getNextHighestDepth());
Piece.beginBitmapFill(_imageBitmap, new Matrix(1, 0, 0, 1, -j*_pieceW, -i*_pieceH), true, true);
Piece._x = j*_pieceW;
Piece._y = i*_pieceH;
Piece.i = i;
Piece.j = j;
new MovieClipDrag(Piece);
drawPiece(Piece, getAllDotArray(Piece));
//画小块外形
Piece.filters = [new BevelFilter(3, 30)];
}
}
}
public function setMaxWH(w:Number, h:Number) {
//设置答应的最大宽高
_imageMaxW = w;
_imageMaxH = h;
}
public function setRowAndLine(row:Number, line:Number) {
//设置切割的 行/列
if (row<=0 || line<=0) {
trace("行/列不能为0,按默认10*10进行切图");
return;
}
if (row*line>900) {
trace("数量太大,运算困难,按默认10*10进行切图");
return;
}
_row = row;
_line = line;
}
public function setPosition(x:Number, y:Number) {
//设置
if (x<0 || y<0) {
trace("超出场景范围,按默认(0,0)位置进行摆放");
return;
}
_x = x;
_y = y;
if (_pieceBoard<>undefined) {
_pieceBoard._x = _x;
_pieceBoard._y = _y;
}
}
public function getPieceBoard():MovieClip {
//取得碎片载体
return _pieceBoard;
}
public function toString():String {
return "uzzle::凹凸外形的拼图切割";
}
/**
* Private methods
*/
private function loadImage(url:String) {
_newURL = url;
try {
_imageLoader.loadClip(_newURL, _imageM);
} catch (e:Error) {
trace(e);
}
}
private function onLoadStart(target:MovieClip) {
target._visible = false;
dispatchEvent({type:"onStart", target:this});
}
private function onLoadError(target:MovieClip, errorCode:String) {
dispatchEvent({type:"onError", target:this});
trace("errorCode:" errorCode);
trace("出错,继续读取上张图片");
_newURL = _oldURL;
loadImage(_newURL);
}
private function onLoadInit(target:MovieClip) {
dispatchEvent({type:"onInit", target:this});
_oldURL = _newURL;
if (target._width<10 || target._height<10) {
throw new Error("图片太小,不适合切割!");
}
if (isNaN(_imageMaxW _imageMaxH)) {
_imageMaxW = _imageMaxH=600;
}
if (isNaN(_row _line)) {
_row = 10;
_line = 10;
}
_imageW = target._width>_imageMaxW ? _imageMaxW : target._width;
_imageH = target._height>_imageMaxH ? _imageMaxH : target._height;
_pieceBoard.removeMovieClip();
mcToBitmap(target);
}
private function mcToBitmap(mc:MovieClip) {
_imageBitmap = new BitmapData(_imageW, _imageH, true, 0x00ffffff);
_imageBitmap.draw(mc);
//隐藏掉
_pieceBoard = _path.createEmptyMovieClip("pieceBoard", _path.getNextHighestDepth());
_pieceBoard._x = _x;
_pieceBoard._y = _y;
bitmapCut();
}
private function pieceSet() {
_pieceW = _imageW/_line;
_pieceH = _imageH/_row;
_pieceMinWH = Math.min(_pieceW, _pieceH);
_pieceD = _pieceMinWH/_pieceD_k;
_pieceOW = _pieceMinWH/_pieceO_k;
_pieceOH = _pieceOW/_pieceOWH_k;
}
private function getRndD():Number {
//返回与边界错开的高度
return _pieceD-Math.random()*2*_pieceD;
}
private function drawPiece(mc:MovieClip, dotArr:Array):Void {
with (mc) {
lineStyle(0);
moveTo(0, 0);
for (var k:Number = 0; k<dotArr.length; k ) {
if (dotArr[k].x<>undefined) {
lineTo(dotArr[k].x, dotArr[k].y);
} else {
curveTo(dotArr[k][0].x, dotArr[k][0].y, dotArr[k][1].x, dotArr[k][1].y);
}
}
endFill();
}
}
private function getOvalDotArray(mc:MovieClip, position:String):Array {
var rnd:Number = random(2) ? 1 : -1;
var circleDotArr:Array = ;
switch (position) {
case "right" :
var a0oint = new Point(_pieceW getRndD(), (_pieceH-_pieceOW)/2 _pieceOW/4-Math.random()*_pieceOW/2);
var a1:Array = [new Point(a0.x rnd*(_pieceOH/2), a0.y-_pieceOW/2), new Point(a0.x rnd*_pieceOH, a0.y)];
var a2:Array = [new Point(a0.x rnd*(_pieceOH _pieceOW/3), a0.y _pieceOW/2), new Point(a0.x rnd*_pieceOH, a0.y _pieceOW)];
var a3:Array = [new Point(a0.x rnd*_pieceOH/2, a0.y _pieceOW _pieceOW/2), new Point(a0.x, a0.y _pieceOW)];
circleDotArr = [a0, a1, a2, a3];
break;
case "down" :
var a0oint = new Point(_pieceW-((_pieceW-_pieceOW)/2 _pieceOW/4-Math.random()*_pieceOW/2), _pieceH getRndD());
var a1:Array = [new Point(a0.x _pieceOW/2, a0.y rnd*(_pieceOH/2)), new Point(a0.x, a0.y rnd*_pieceOH)];
var a2:Array = [new Point(a0.x-_pieceOW/2, a0.y rnd*(_pieceOH _pieceOW/3)), new Point(a0.x-_pieceOW, a0.y rnd*_pieceOH)];
var a3:Array = [new Point(a0.x-_pieceOW-_pieceOW/2, a0.y rnd*_pieceOH/2), new Point(a0.x-_pieceOW, a0.y)];
circleDotArr = [a0, a1, a2, a3];
break;
}
return circleDotArr;
}
private function getAllDotArray(mc:MovieClip):Array {
var allDotArray:Array = ;
//a,b,c,d四面
if (mc.i == 0) {
mc.a = ;
} else {
var tempArray:Array = mc._parent["iece" (Number(mc._name.substr(5))-_line)].c;
var a:Array = new Array(4);
a[0] = new Point(tempArray[3][1].x, tempArray[3][1].y-_pieceH);
a[1] = [new Point(tempArray[3][0].x, tempArray[3][0].y-_pieceH), new Point(tempArray[2][1].x, tempArray[2][1].y-_pieceH)];
a[2] = [new Point(tempArray[2][0].x, tempArray[2][0].y-_pieceH), new Point(tempArray[1][1].x, tempArray[1][1].y-_pieceH)];
a[3] = [new Point(tempArray[1][0].x, tempArray[1][0].y-_pieceH), new Point(tempArray[0].x, tempArray[0].y-_pieceH)];
mc.a = a;
}
if (mc.j == 0) {
mc.d = ;
} else {
var tempArray:Array = mc._parent["Piece" (Number(mc._name.substr(5))-1)].b;
var a:Array = new Array(4);
a[0] = new Point(tempArray[3][1].x-_pieceW, tempArray[3][1].y);
a[1] = [new Point(tempArray[3][0].x-_pieceW, tempArray[3][0].y), new Point(tempArray[2][1].x-_pieceW, tempArray[2][1].y)];
a[2] = [new Point(tempArray[2][0].x-_pieceW, tempArray[2][0].y), new Point(tempArray[1][1].x-_pieceW, tempArray[1][1].y)];
a[3] = [new Point(tempArray[1][0].x-_pieceW, tempArray[1][0].y), new Point(tempArray[0].x-_pieceW, tempArray[0].y)];
mc.d = a;
}
if (mc.i == _row-1) {
mc.c = ;
} else {
mc.c = getOvalDotArray(mc, "down");
}
if (mc.j == _line-1) {
mc.b = ;
} else {
mc.b = getOvalDotArray(mc, "right");
}
allDotArray = allDotArray.concat(mc.a);
allDotArray.push(new Point(_pieceW, 0));
allDotArray = allDotArray.concat(mc.b);
allDotArray.push(new Point(_pieceW, _pieceH));
allDotArray = allDotArray.concat(mc.c);
allDotArray.push(new Point(0, _pieceH));
allDotArray = allDotArray.concat(mc.d);
return allDotArray;
}
}
分享:用 JavaScript 控制 Flash 播放器的方法汇总
说明:含例句的方法我已作了测试。播放动画:Play()例:(网页中的Flashid).Play();停止动画:StopPlay()动画是否正在播放:IsPlaying()跳转到某帧:Goto
/所属分类:Flash教程/更新时间:2008-03-05

相关Flash教程:
- 相关链接:
- 教程说明:
Flash教程-Flash使用bitmapData打造随机凹凸拼图效果
。