欧美三区四区_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教程
精品久久久久久久久久久aⅴ| 制服丝袜综合网| a级黄色免费视频| 手机看片国产1024| 美女视频黄a大片欧美| 91精品国产综合久久精品麻豆| 国产精品高潮视频| 欧美性受xxxx黒人xyx性爽| 亚洲视频中文字幕在线观看| 欧美88av| 欧美丝袜一区二区三区| 国产精品视频区| 午夜免费福利在线| 色老头在线视频| 欧美三级视频| 欧美视频完全免费看| 国产成人综合精品| 中文字幕第66页| 国产成人三级一区二区在线观看一| 亚洲精品少妇| 国产日韩久久久| 亚洲精品**不卡在线播he| 欧美国产日韩a欧美在线观看| 欧美第一黄色网| 亚洲污视频在线观看| 久久久久亚洲视频| 婷婷综合视频| 一本到高清视频免费精品| 国产精品草莓在线免费观看| 日韩精品――色哟哟| 免费污视频在线一区| 99精品桃花视频在线观看| 亚洲女人天堂视频| 亚洲欧洲免费无码| 日本中文字幕久久| 亚洲精品中文字幕乱码| 91久久精品午夜一区二区| 国产在线高清精品| 亚洲人成人无码网www国产 | 91在线视频在线| 欧美激情第1页| 女人和拘做爰正片视频| 亚洲国产精品久久久久久久| 久久99精品国产.久久久久久| 欧美一区二区在线视频| 天堂一区二区三区| 久久久久久久久毛片| 午夜欧洲一区| 亚洲成人午夜电影| 国产精品一二三视频| 永久免费成人代码| 精品中文一区| 亚洲综合另类小说| 国产精品6699| 性欧美精品男男| 狠狠综合久久av一区二区蜜桃| 五月天中文字幕一区二区| 成人高清在线观看| 九九九在线视频| 激情综合中文娱乐网| 精品国产免费一区二区三区香蕉| 欧美一区二区三区四区夜夜大片 | 国产欧美自拍一区| 日本一区二区免费在线观看视频 | 中文子幕无线码一区tr| 国产99视频在线观看| 天天久久综合网| 九九九九九九精品任你躁| 久久久久久久久久久黄色| 欧美亚洲视频在线看网址| www.成年人| 亚洲人成色777777精品音频| 91视视频在线观看入口直接观看www| 午夜免费日韩视频| 在线免费观看麻豆| 成人无号精品一区二区三区| 欧美精品九九99久久| 农村寡妇一区二区三区| 精品人妻无码一区二区性色| 日本亚洲最大的色成网站www| 色哟哟入口国产精品| 五月六月丁香婷婷| 日本免费成人| 亚洲最新在线观看| 成人伊人精品色xxxx视频| 国产精品高清无码在线观看| 精品久久ai电影| 一本到高清视频免费精品| 一区二区不卡在线观看| 无码人妻一区二区三区线| 免费国产亚洲视频| 欧美日韩国产成人在线| 中文字幕欧美视频| 精品国产一区二| 精品日韩美女的视频高清| 国产高清不卡av| 丁香社区五月天| 国产在线不卡一区| 2024亚洲男人天堂| 日韩三级久久久| 国产亚洲精品久久久久婷婷瑜伽| 色狠狠久久aa北条麻妃| www.激情小说.com| 成人午夜sm精品久久久久久久| 亚洲欧美日韩在线| 免费中文日韩| 欧美日韩在线视频播放| 国内欧美视频一区二区| 91国产视频在线播放| 久久人妻一区二区| 97人人精品| 日韩精品中文字幕视频在线| 免费高清在线观看免费| 亚洲日本网址| 亚洲一区二区三区在线| 国产日韩欧美一区二区| 91精品国产乱码在线观看| 一区二区91| 亚洲桃花岛网站| 久久久久亚洲AV成人网人人小说| 风间由美一区二区av101| 欧美色中文字幕| 欧美视频在线免费播放| 欧美大胆成人| 中文av字幕一区| 亚洲aa中文字幕| 国产在线观看免费av| 国产欧美日韩一级| 欧美高清视频一区二区| 中国1级黄色片| 亚洲视频精品| 欧美另类在线播放| 免费观看一级一片| 影音先锋久久精品| 欧美成人激情视频免费观看| 中国av免费看| 狠狠入ady亚洲精品| 亚洲欧美国产精品| 中文字幕一区二区人妻电影丶| 亚洲国产精品91| 中文字幕亚洲专区| 丰满少妇一区二区三区专区| 盗摄系列偷拍视频精品tp| 日韩一区二区三区在线| 国产成人黄色片| 亚洲国产一区二区久久| 午夜精品福利视频网站| 视频一区三区| 国产麻豆一区| 亚洲aaa精品| 九九热只有这里有精品| 我要色综合中文字幕| 91精品久久久久久蜜臀| 噜噜噜久久亚洲精品国产品麻豆| 国产欧美自拍一区| 亚洲精品99999| 九九九九九伊人| 一道在线中文一区二区三区| 91精品国产综合久久久久久久久久 | 久久久亚洲天堂| 日本少妇性高潮| 日韩va亚洲va欧美va久久| 欧美巨乳在线观看| 久久久久成人网站| 久久国产精品一区二区| 国产69精品99久久久久久宅男| 久久久久久久久久99| 美女脱光内衣内裤视频久久影院| 国产精品第一页在线| 亚洲视频在线免费播放| 亚洲人成在线播放网站岛国 | 中文字幕制服诱惑| 中文字幕一区二区三区四区| 精品免费视频123区| 国产熟女一区二区三区五月婷| 亚洲色图视频网站| 国产精品三级一区二区| а√天堂资源国产精品| 日本女人性生活视频| ts人妖另类在线| 国产亚洲人成网站在线观看| 国产精品不卡视频| 97色在线视频| 中文在线第一页| 亚洲国产成人在线| 在线观看福利一区| 欧美成人h版| 欧美性色综合网| 久青草视频在线播放| 狼人天天伊人久久| 国产午夜精品一区二区三区| 伊人久久久久久久久久久久久久| 成人精品免费看| 欧美专区一二三| 亚洲美女性生活| 亚洲色图一区二区| 国产69精品久久久久久久| 精品国产乱码| 精品少妇一区二区30p| 久久精品国产成人av| 成人h精品动漫一区二区三区| 欧美日韩国产天堂| 日韩中文字幕一区| 午夜日韩影院| 日韩精品一区二区三区在线观看 | 久久久久久久综合狠狠综合| 国产精品久久久久久久久久直播 | 久久一区二区三区视频| 国产成人午夜高潮毛片| 97免费高清电视剧观看| 日韩av中字| 欧美在线短视频| 国产又大又黄又粗又爽| 1024日韩| 成人免费激情视频| abab456成人免费网址| 亚洲国产精久久久久久久| 久艹在线观看视频| 国产suv一区二区三区88区| 亚洲春色在线| 日本一区二区三区视频在线看 | 日韩精品一区二| 9.1在线观看免费| 美国一区二区三区在线播放| 精品国产电影| 99ri日韩精品视频| 久久久精品久久久久| 中国老头性行为xxxx| 国产精品久久一卡二卡| 国产免费黄视频| 亚洲韩日在线| 91嫩草在线| 亚洲性受xxx喷奶水| 三级欧美在线一区| 93在线视频精品免费观看| 欧美日韩和欧美的一区二区| 亚洲精品中文字幕在线播放| 从欧美一区二区三区| 999热视频| 少妇精品无码一区二区免费视频| 日韩一区二区免费看| 亚洲最大福利网站| 午夜视频在线播放| 日韩成人小视频| 亚洲欧美综合7777色婷婷| 成人免费视频视频| 日韩少妇中文字幕| y111111国产精品久久久| 欧美日本亚洲视频| 亚洲国产精品久久久久爰性色| 欧美一级视频精品观看| 日韩在线观看免| 一区二区三区在线不卡| 岛国大片在线免费观看| 岛国精品一区二区| 日本午夜激情视频| 久久激情综合| 好吊色欧美一区二区三区 | 四虎影视一区二区| 日韩毛片一二三区| 女同性αv亚洲女同志| 日日摸夜夜添夜夜添国产精品 | 999福利视频| 99re这里只有精品首页| 先锋影音男人资源| 亚洲午夜久久久久久尤物| 国产综合18久久久久久| 老司机亚洲精品一区二区| 欧美国产在线视频| 亚洲欧洲视频在线观看| 亚洲精品在线一区二区| 久久久久久久久久影院| 色94色欧美sute亚洲线路二 | 久久av秘一区二区三区| 免费视频一区三区| 国产极品jizzhd欧美| 性插视频在线观看| 国产小视频国产精品| 亚洲在线视频播放| 欧美性猛交xxxx乱大交退制版| 美国美女黄色片| 亚洲激情成人在线| 添女人荫蒂视频| youjizz久久| 日韩一级免费在线观看| 午夜在线a亚洲v天堂网2018| 国产乱码精品一区二区三区卡 | 波多野结衣爱爱视频| 亚洲成国产人片在线观看| 日韩在线免费观看av| 97精品超碰一区二区三区| 亚洲精品一二三四五区| 国产精品99久久久| 一本色道久久88亚洲精品综合| 久久精品国产68国产精品亚洲| 91免费综合在线| 国产精品久久免费视频| 午夜美女久久久久爽久久| 涩涩涩久久久成人精品| 日韩视频免费在线| 91福利在线观看视频| 欧美久久婷婷综合色| 日韩精品乱码久久久久久| 天天色天天爱天天射综合| 日本一区二区在线免费观看| 日本一区二区三级电影在线观看| 久久久久久久久久影视| 欧美国产日韩一二三区| 在线观看免费视频黄| 成人av网站在线| 日本人69视频| 2欧美一区二区三区在线观看视频| 免费在线观看日韩视频| 国产一区二区精品久久| 亚洲人成无码www久久久| 美女一区二区三区| 久久人妻无码一区二区| 亚洲国产专区校园欧美| 最新中文字幕久久| 奇米亚洲午夜久久精品| 男同互操gay射视频在线看| 欧美日韩三级| 中文字幕在线亚洲三区| 日韩电影在线一区二区三区| 丰满女人性猛交| 另类调教123区| 免费看a级黄色片| 2欧美一区二区三区在线观看视频| 国产精品偷伦视频免费观看了| 26uuu精品一区二区| 亚洲一区和二区| 亚洲美女淫视频| 国产在线观看无码免费视频| 亚洲最新视频在线观看| 国产大片免费看| 欧美一区二区视频网站| 在线观看黄网站| 6080日韩午夜伦伦午夜伦| 中文av免费观看| 亚洲精品电影网| 天堂在线视频免费观看| 日韩亚洲一区二区| 激情中国色综合| 国产一区二区香蕉| 日本福利一区| 51国偷自产一区二区三区的来源| 国产精品99久久精品| 伊人久久婷婷色综合98网| 99在线精品视频在线观看| 日本wwwcom| 激情五月激情综合网| 国内外成人免费在线视频| 国产精品国产三级国产aⅴ原创 | 精品久久免费视频| 欧美日韩三级视频| 天天综合天天干| 亚洲欧美中文另类| www.桃色av嫩草.com| 亚洲一区二区精品| 成人全视频免费观看在线看| 国产日韩在线看片| 女人av一区| 亚洲国产成人不卡| 久久精品中文| xxxx18hd亚洲hd捆绑| 91丨porny丨国产入口| 久久成人激情视频| 欧美日韩国产影片| av网站在线观看免费| 久久九九全国免费精品观看| 精品国产乱码久久久久久樱花| 亚洲伊人久久综合| 亚洲伦伦在线| 波多野结衣天堂| 久久久综合视频| 亚洲天堂最新地址| 日韩午夜在线影院| 天天干天天做天天操| 国色天香2019中文字幕在线观看| 亚洲美女久久| 亚洲精品一区国产精品| 国产v日产∨综合v精品视频| 日本黄色网址大全| 91麻豆精品国产无毒不卡在线观看| 黄色片网站免费在线观看| 欧美成人激情在线| 女同一区二区三区| 精品高清视频| 亚洲综合另类| 欧美视频亚洲图片| 欧美视频在线观看 亚洲欧| 99久热在线精品996热是什么| 中文字幕综合一区| 欧美激情极品| 中文字幕剧情在线观看一区| 91麻豆高清视频| 清纯粉嫩极品夜夜嗨av| 亚洲午夜未满十八勿入免费观看全集| 亚洲 另类 春色 国产| 成人激情免费在线|