欧美三区四区_av先锋影音资源站_亚洲第一论坛sis_影音先锋2020色资源网_亚洲精品社区_在线免费观看av网站_国产一区二区伦理_亚洲欧美视频一区二区_99视频精品全部免费在线_精精国产xxxx视频在线

Flash使用bitmapData打造隨機凹凸拼圖效果_Flash教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦: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教程
国产一区在线看| 欧美在线va视频| 欧美a级一区| 亚洲综合精品久久| 国内久久久精品| 久久久精品在线视频| 精人妻无码一区二区三区| 91综合视频| 午夜精品久久久久久| 国产精品高清网站| 手机看片国产精品| 唐人社导航福利精品| 看片的网站亚洲| 亚洲第一页在线| 天天综合狠狠精品| 国产性70yerg老太| 欧美日韩高清| 午夜久久久久久| 国产综合香蕉五月婷在线| 欧美大喷水吹潮合集在线观看| 625成人欧美午夜电影| 国产一区高清在线| 亚洲欧美一区二区三区情侣bbw | 久久男人av| 国产欧美精品日韩区二区麻豆天美| 久久久999精品免费| 北条麻妃69av| 精品国产一区三区| 久久无码高潮喷水| 人人妻人人爽人人澡人人精品| 欧美日韩三级| 欧美日韩视频专区在线播放| 精品国产乱码久久久久软件| 午夜精品一区二区三级视频| 国产一区二区亚洲| 天天av天天翘天天综合网色鬼国产| 国产日韩欧美夫妻视频在线观看| 激情综合丁香五月| 中文字幕一区二区三区中文字幕 | 欧美亚洲国产免费| 久久黄色免费网站| 91一区二区三区四区| 色婷婷亚洲精品| 精品国产乱码久久久久久郑州公司 | 天天综合狠狠精品| 日韩视频在线观看一区| 国内一区二区三区| 欧美一区二区免费视频| 午夜午夜精品一区二区三区文| 欧美一区二区三区四| 亚洲高清不卡| 欧美mv和日韩mv国产网站| 婷婷视频在线播放| 亚洲综合精品国产一区二区三区 | 国产精品美女主播| 性少妇bbw张开| 性人久久久久| 调教+趴+乳夹+国产+精品| 91福利视频导航| 全网免费在线播放视频入口| 色天天综合网| 欧美日韩高清影院| 中文字幕在线观看一区二区三区| 中文字幕乱码人妻二区三区| 蜜桃一区二区三区在线| 国产亚洲精品高潮| 麻豆一区二区三区视频| 91久久久久久白丝白浆欲热蜜臀| 中文字幕第一区二区| 国产精品视频网址| 蜜桃视频最新网址| 亚洲激情中文在线| 日韩一级黄色片| 国内少妇毛片视频| 天天干,天天操,天天射| 26uuu精品一区二区三区四区在线| 欧美一级在线播放| 最近中文字幕在线mv视频在线 | 无码人妻精品一区二区三区9厂| 欧美综合二区| 伊人久久男人天堂| 加勒比av中文字幕| 成人av影音| 欧美日韩一区二区在线播放| 日本一区二区三区四区在线观看| 中文字幕激情视频| 国产91在线观看丝袜| 高清欧美性猛交xxxx黑人猛交| 在线观看av中文字幕| 欧美日韩在线观看视频小说| 91麻豆精品国产91久久久资源速度| 法国空姐在线观看免费| 黄色三级网站在线观看| 91在线精品一区二区三区| 国产精品aaa| 青青青在线免费观看| 小嫩嫩精品导航| 色阁综合伊人av| 国产高潮失禁喷水爽到抽搐| 亚洲影院天堂中文av色| 7799精品视频| 免费国产a级片| 欧美天堂在线| 亚洲成a人在线观看| 日韩精品大片| 懂色av成人一区二区三区| 国产日韩高清在线| 国产美女在线精品免费观看| 国产乱码77777777| 成人黄色av网站在线| 国产精品欧美日韩久久| 日韩av在线播放观看| 精品一区二区三区欧美| 5566成人精品视频免费| 卡通动漫亚洲综合| 日本人妖一区二区| 97视频在线观看免费| 天堂网中文在线观看| 国产精品色网| 欧美二区在线播放| 日本视频在线免费| 久久亚洲美女| 国内精品久久影院| 五月天激情丁香| 捆绑变态av一区二区三区| 69av成年福利视频| 免费中文字幕视频| 精品一区二区在线看| 青青草99啪国产免费| 久久久一区二区三区四区| 九色porny丨国产精品| 日本欧美在线视频| 久久久国产高清| 波波电影院一区二区三区| 91精品视频免费看| 正在播放木下凛凛xv99| 久久日韩精品一区二区五区| 国产精品久久久久久久天堂第1集 国产精品久久久久久久免费大片 国产精品久久久久久久久婷婷 | 久99久在线视频| 波多野结衣家庭教师在线观看| 亚洲欧美日韩专区| 午夜精品免费视频| 久久r这里只有精品| 国内一区二区在线| 国产精品视频一区二区三区四| 免费看毛片网站| 99麻豆久久久国产精品免费| 国产欧美韩日| 天天操天天干天天爱| 精品国产31久久久久久| 免费无码毛片一区二三区| 视频精品二区| 日韩欧美成人一区二区| 色姑娘综合天天| 欧美日韩国产欧| 久久久久久中文| 黄色小说在线观看视频| 不卡视频一二三四| 精品国产乱码久久久久久郑州公司 | 性欧美videosex高清少妇| 欧美日韩成人影院| 欧美在线啊v一区| 久久久久久久久久久久91| 日本一二区不卡| 日韩一区二区三区在线播放| 欧洲性xxxx| 精品综合久久久久久8888| 成人激情免费在线| 精品人妻av一区二区三区| 亚洲一级在线观看| 久久综合色视频| 国产精品亚洲片在线播放| 国产一区二区三区丝袜| 中文字幕伦理片| 国产中文一区二区三区| 成人av男人的天堂| 四虎永久在线观看| 日本韩国一区二区三区| 欧美午夜aaaaaa免费视频| 91超碰国产精品| 久久久久久久久久久免费精品| 四虎成人永久免费视频| 国产日韩高清在线| 美女在线免费视频| 国产精品网址| 一区二区三区 在线观看视| 99久久久免费精品| 成人激情动漫在线观看| 欧美一卡2卡3卡4卡无卡免费观看水多多| 久久91导航| 日韩一区二区在线免费观看| 妖精视频一区二区| 奇米一区二区三区| 波多野结衣久草一区| 向日葵视频成人app网址| 欧美日韩成人一区二区| 一区二区三区四区影院| 免费精品视频| 亚洲综合色av| 日韩欧美一区二区三区免费观看 | 香蕉视频亚洲一级| 7799精品视频| 亚洲自拍偷拍一区二区| 国产又黄又大久久| 欧美不卡三区| 亚洲综合网狠久久| 亚洲人在线观看| 欧美成人aaa片一区国产精品| 久久人人超碰精品| 国产免费xxx| 国内精品伊人久久久| 欧美人在线视频| 中文字幕人妻一区二区在线视频| 亚洲一区二区成人在线观看| 欧美婷婷精品激情| 国产精品五区| 99国产超薄肉色丝袜交足的后果| 黄瓜视频成人app免费| 亚洲第一网中文字幕| 国产精品国产精品88| 国产免费观看久久| 欧美不卡在线播放| 亚洲一级毛片| 国产精品久久久av| 亚洲av成人精品日韩在线播放| 日韩一区和二区| 国产一区在线观看免费| 久久久精品综合| 日韩欧美一区二| 黄色免费成人| 91传媒在线免费观看| 福利一区二区| 亚洲视频一区二区| 日本在线视频中文字幕| 亚洲综合在线免费观看| 中文字幕亚洲影院| 美女国产一区二区| 日韩精品欧美在线| 国产一区网站| 庆余年2免费日韩剧观看大牛| 秋霞欧美在线观看| 日韩欧美国产精品| 我要看黄色一级片| 国产精品二区一区二区aⅴ污介绍| 国产日产欧美视频| 午夜亚洲性色视频| 精品国产aⅴ麻豆| 卡通动漫国产精品| 欧美日韩福利视频| 亚洲乱熟女一区二区| 精品三级av在线| 九九热只有精品| 亚洲综合在线第一页| 中文字幕1区2区| 大桥未久av一区二区三区中文| 米仓穗香在线观看| 中文精品电影| 1卡2卡3卡精品视频| 91成人在线精品视频| 欧美区二区三区| 日韩中文字幕免费在线观看| 激情综合五月婷婷| 亚洲综合一区二区| 99九九99九九九99九他书对| 美女www一区二区| 日韩三级在线播放| 欧美三级三级| 成人av电影天堂| 国产精区一区二区| 久久精品视频网站| 99久久久无码国产精品免费| 欧美一区二区三区在线观看| 国产精品白丝喷水在线观看| 亚洲蜜桃精久久久久久久| 国产成人强伦免费视频网站| 国产一区二区三区高清播放| www.欧美黄色| av成人黄色| 欧美精品一区二区三区四区五区| 神马久久一区二区三区| 国产高清在线不卡| 99精品国产九九国产精品| 欧美成年人视频| 人妻夜夜爽天天爽| 国产午夜精品一区二区三区 | 久久久久久蜜桃| 亚洲国产va精品久久久不卡综合| 久久久影院一区二区三区 | 国产精品999| 国外成人福利视频| 欧美成人免费一级人片100| 亚洲a视频在线| 亚洲免费视频网站| 一本一道精品欧美中文字幕| 欧美成人精品3d动漫h| 国产午夜在线播放| 欧美色男人天堂| 极品颜值美女露脸啪啪| 欧美日韩国产页| 手机在线免费看片| 丰满岳妇乱一区二区三区| 少妇av片在线观看| 亚洲黄色免费网站| 日本xxx在线播放| 亚洲人妖av一区二区| 香港三日本8a三级少妇三级99| 国产日韩av一区| 激情综合激情五月| 国产精品美日韩| 国产精品成人99一区无码| 国产欧美一区在线| 精品国产乱码久久久久夜深人妻| 国产欧美精品日韩区二区麻豆天美| 女人扒开双腿让男人捅| 国产视频911| 亚洲一区和二区| 国产精品久久一卡二卡| 中文文字幕文字幕高清| 中文字幕在线观看不卡视频| 日本一卡二卡在线| 亚洲天堂a在线| 免费看污片网站| 亚洲第一福利视频在线| sm捆绑调教视频| 色综合网色综合| 国产午夜福利片| 日韩欧美视频一区| 伊人影院中文字幕| 久久99精品久久久久久国产越南 | 在线亚洲人成| 欧美极品欧美精品欧美视频 | 国产男女无套免费网站| 亚洲欧洲黄色网| 天堂在线观看av| 久热精品视频在线观看| 欧美综合影院| 国产精品88a∨| 欧美激情在线精品一区二区三区| 亚洲最大福利视频网站| 91视频综合| 亚洲欧洲另类精品久久综合| 久久亚洲色图| 日本黄网站免费| ww亚洲ww在线观看国产| 午夜不卡久久精品无码免费| 一区二区视频免费在线观看| 成人在线观看小视频| 欧美二区在线观看| 中文字幕 欧美激情| 国产亚洲精品日韩| 欧美极品免费| 国产精品狼人色视频一区| 久久不见久久见国语| 国产一区在线观| 亚洲精品美女| 黄色动漫在线免费看| 93久久精品日日躁夜夜躁欧美| 中国黄色片视频| 精品国产乱码久久久久久婷婷| 久久久无码精品亚洲国产| 日韩欧美精品三级| 精品国产av 无码一区二区三区 | 国产成人一区二区三区影院| 精品一区在线播放| 老鸭窝毛片一区二区三区| 1024精品视频| 国产免费成人在线视频| 国产又粗又黄又猛| 欧美久久久久中文字幕| 国产伦理吴梦梦伦理| 欧美精品一二区| jizz性欧美23| 国产在线精品一区二区中文| 亚洲免费网址| 亚洲成色www.777999| 国产精品免费av| 欧美黑人精品一区二区不卡| 亚洲成年网站在线观看| 天堂网在线播放| 国产精品福利在线观看网址| 91一区二区三区四区| 欧美中文字幕在线观看视频| 成人美女在线视频| 国产成人精品无码免费看夜聊软件| 色天使色偷偷av一区二区| 伊人久久国产精品| 欧美国产日韩一区二区三区| 精品国产影院| 日本一区不卡| 国产麻豆午夜三级精品| 亚洲天堂资源在线| 欧美三区在线视频| 国产激情视频在线播放| 欧美中文在线字幕| 欧美hentaied在线观看| 黄色网在线视频| 国产视频一区不卡| 黄色一级视频免费观看| 亚洲系列中文字幕| 免费观看性欧美大片无片|