Flash教程:制作互動(dòng)的橡皮刷_Flash教程
教程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
相關(guān)Flash教程:
Flash教程Rss訂閱網(wǎng)站制作教程搜索
Flash教程推薦
- Flash MX2004入門與進(jìn)階實(shí)例——?jiǎng)幼髂_本(2)
- FLASH AS3制作任意縮小放大旋轉(zhuǎn)的變形工具
- FlashMX2004建立自定義類package
- 網(wǎng)頁(yè)中廣告條的關(guān)閉方法
- 精簡(jiǎn)Flash文件體積的幾個(gè)小技巧
- flash教程:使用拆分?jǐn)?shù)字和文字的函數(shù)
- Flash8簡(jiǎn)單制作飛速旋轉(zhuǎn)效果
- 通過(guò)實(shí)例學(xué)習(xí)Flash AS3.0:案例五
- Flash 動(dòng)作腳本之:資料速查(14)
- 電子雜志設(shè)計(jì)制作常用Flash技術(shù)
猜你也喜歡看這些
- Flash 8中文版MV及課件制作基礎(chǔ)培訓(xùn)百例
- 精通Flash動(dòng)畫設(shè)計(jì)(附光盤腳本分鏡頭設(shè)計(jì)與典型案例)》
- Flash as3.0視頻教程之聲音編程
- 《Flash CS3 Professional動(dòng)畫制作技能進(jìn)化手冊(cè)》--樣章、樣例、教學(xué)視頻
- Flash 8入門必練
- 臺(tái)灣呂聰賢Flash MX視頻教程
- Adobe Flash CS5 新增功能課程
- 新東方劍橋商務(wù)英語(yǔ)BEC flash教程 初+中+高 (現(xiàn)已穩(wěn)定供源)
- Flash as3.0視頻教程之組件編程
- 2005新東方考研Flash課件(英語(yǔ)、政治)
- 相關(guān)鏈接:
- 教程說(shuō)明:
Flash教程-Flash教程:制作互動(dòng)的橡皮刷
。