日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

Flash教程:制作互動(dòng)的橡皮刷_Flash教程

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

推薦:通過(guò)實(shí)例學(xué)習(xí)Flash AS3.0——案例四
首先聲明:本人大菜鳥一個(gè),剛接觸AS3不久,許多理念還沒來(lái)得及灌輸,這些case都是從網(wǎng)上down的,但因?yàn)榻庹f(shuō)是英文的,不利我們學(xué)習(xí),我就充當(dāng)一個(gè)translater

以前用Flash做橡皮刷的時(shí)候通常都是通過(guò)繪制底圖實(shí)現(xiàn)的,最近在發(fā)現(xiàn)其實(shí)還有一種更好的實(shí)現(xiàn)方法就是用bitmapdata的alpha通道。

  只要在一張圖片上用draw畫一個(gè)透明度為零的圖片,就可以實(shí)現(xiàn)在draw的區(qū)域圖片透明了。

  完成效果如下:


  點(diǎn)擊選擇右邊的橡皮刷或者畫筆圖標(biāo),再用鼠標(biāo)在畫面上拖動(dòng),看看會(huì)出現(xiàn)什么情況?

  AS代碼如下:

//導(dǎo)入所需要的類
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.Point;
//初始點(diǎn)(0,0)
var base_point:Point = new Point(0, 0);
//初始區(qū)域(0,0,25,25)
var base_rectangle:Rectangle = new Rectangle(0, 0, 25, 25);
//導(dǎo)入庫(kù)中圖片
var bit1:BitmapData = BitmapData.loadBitmap("img1");
//定義org_bit:BitmapData用于恢復(fù)圖片
var org_bit:BitmapData = new BitmapData(mc._width, bit1.height, true, 0);
org_bit.draw(bit1);
//draw_bit拷貝org_bit用于涂鴉操作
var draw_bit:BitmapData = org_bit.clone();
//導(dǎo)入到舞臺(tái)中
_root.createEmptyMovieClip("draw_mc", 1);
draw_mc.attachBitmap(draw_bit, 1);
//定義橡皮刷erase_bit和筆刷redraw_bit argb為0(透明)
var erase_bit:BitmapData = new BitmapData(mc1._width, mc1._height, true, 0);
var redraw_bit:BitmapData = erase_bit.clone();
//橡皮刷erase_bit填充為白色,這里注重a必須不為0 rbg為FFFFFF
erase_bit.fillRect(erase_bit.rectangle, 0xFFFFFFFF);
//定義橡皮刷erase_bit和筆刷redraw_bit外形 注重mc1必須為黑色 你也可以嘗試用別的顏色看看效果慢慢體會(huì)吧
erase_bit.draw(mc1);
redraw_bit.draw(mc1);
//交換erase_bit r通道和a通道數(shù)值 所以a通道數(shù)值為00
erase_bit.copyChannel(erase_bit, erase_bit.rectangle, new Point(0, 0), 1, 8);
//保存當(dāng)前使用的工具
var tools:String;
//點(diǎn)擊筆刷工具
mc_bursh.onRelease = function()
{
this.gotoAndStop(2);
mc_earse.gotoAndStop(1);
tools = "bursh";
};
//點(diǎn)擊橡皮刷工具
mc_earse.onRelease = function()
{
this.gotoAndStop(2);
mc_bursh.gotoAndStop(1);
tools = "easre";
};
//在draw_bit上涂鴉
draw_mc.onPress = function()
{
trace(tools);
if (tools == "bursh")
{
this.onMouseMove = bursh_pic;
}
if (tools == "easre")
{
this.onMouseMove = earse_pic;
}


};
//停止涂鴉
draw_mc.onRelease = function()
{
delete this.onMouseMove;
};
//橡皮刷工具
function earse_pic()
{
var now_rect:Rectangle = new Rectangle(_xmouse, _ymouse, _xmouse base_rectangle.width, _ymouse base_rectangle.height);
trace(now_rect);
//在draw_bit上使用copyPixels alpha為false 透明區(qū)域透明 不透明區(qū)域保持原色
draw_bit.copyPixels(draw_bit, now_rect, new Point(_xmouse, _ymouse), erase_bit, new Point(0, 0), false);
updateAfterEvent();
}
//筆刷工具
function bursh_pic()
{
var now_rect:Rectangle = new Rectangle(_xmouse, _ymouse, _xmouse base_rectangle.width, _ymouse base_rectangle.height);


trace(now_rect);
//在org_bit上使用copyPixels alpha為true 則筆刷工具只有不透明的地方起作用
draw_bit.copyPixels(org_bit, now_rect, new Point(_xmouse, _ymouse), redraw_bit, new Point(0, 0), true);
updateAfterEvent();
}
//移動(dòng)背景圖觀察效果
mc.onPress = function()
{
this.startDrag();
};
mc.onRelease = function()
{
this.stopDrag();
};

分享:通過(guò)實(shí)例學(xué)習(xí)AS3.0——案例三
首先聲明:本人大菜鳥一個(gè),剛接觸AS3不久,許多理念還沒來(lái)得及灌輸,這些case都是從網(wǎng)上down的,但因?yàn)榻庹f(shuō)是英文的,不利我們學(xué)習(xí),我就充當(dāng)一個(gè)translater

來(lái)源:閃吧BBS//所屬分類:Flash教程/更新時(shí)間:2008-03-05
相關(guān)Flash教程