跳到主要內容

Tweener載入圖片特效

借一下Albert的網站來做個教學
http://www.albertlan.com/client/mocafusion/
點選網站WORKS選項
小圖被點下後, 開始載入圖片,
後方的背景會跟著縮放, 載入完成後, 會有一個亮度的效果
製作方法如下:

1.按下按鈕後, 開始載入指定的圖片
2.讓背景的黑色框縮小成280x22
讓進度bar縮小成2x20, 當縮小完成後, 開始指入圖片
3.載入進度同時, 讓進度bar縮放。
4.載入成功後, 讓進度bar縮放跟圖片一樣的寬高。
讓背景縮放比圖片的寬高都多出20。
同時讓圖片至中。
5.圖片由亮至沒有效果。
import caurina.transitions.Tweener;
//匯入Tweener
import caurina.transitions.properties.ColorShortcuts;
//匯入ColorShortcuts
ColorShortcuts.init();
//啟動ColorShortcuts.init函式
//這樣即可在Tweener裡來調整亮度。

var ldr:Loader = new Loader();
this.addChild(ldr);
//Loader物件, 載入圖片。
ldr.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,progressHandler);
//偵聽載入進度。
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE,completeHandler);
//偵聽完成進度

b0.addEventListener(MouseEvent.CLICK,clickHandler);
b1.addEventListener(MouseEvent.CLICK,clickHandler);
//偵聽場景上的按鈕。
function clickHandler (e:MouseEvent):void {
  if(e.currentTarget == b0){
    loadImage("1.jpg");
  }else{
    loadImage("2.jpg");
 }
}
function loadImage (pURL:String):void {
 //按下按鈕後。
 ldr.visible = false;
 //讓ldr不可見。
 Tweener.addTween(progress_mc,{
  time:.7,
  width:2,
  height:20
 });
 //使用Tweener修改progress_mc的寬高。
 Tweener.addTween(bg_mc,{
  time:.7,
  width:280,
  height:22,
  onComplete:function(){
   ldr.load(new URLRequest(pURL));
  }
 });
 //使用Tweener修改bg_mc的寬高, 完成後開始載入圖片。
}
function progressHandler(e:ProgressEvent):void {
 var _percentage:Number = e.bytesLoaded/e.bytesTotal;
 progress_mc.width = 280 * _percentage;
 //載入進度。
}
function completeHandler(e:Event):void {
 ldr.x = stage.stageWidth/2 - ldr.width/2
 ldr.y = stage.stageHeight/2 - ldr.height/2
 //載入完成後, 讓圖片置中
 Tweener.addTween(progress_mc,{
  time:.7,
  width:ldr.width,
  height:ldr.height
 });
 //修改progress_mc的寬高,和圖片一樣。
 Tweener.addTween(bg_mc,{
  time:.7,
  width:ldr.width +20,
  height:ldr.height +20,
  onComplete:onTweenerComplete
});
}
function onTweenerComplete () {
 ldr.visible = true;
 //讓圖片出現。
 Tweener.addTween(ldr, {time:0, _brightness:2.5 } );
 //把亮度調高,再使用Tweener讓亮度變回0
 Tweener.addTween(ldr, {time:.8, _brightness:0 } );
}
附上AS2和AS3的原始碼
AS2_AS3_SourceCodeDown

留言

匿名表示…
想請教一下 奶茶
這個範例中,如果我同時要載入數個圖片 那要怎麼去個別指定loader去做各自載入圖中及載入完畢的動作??
milkmidi寫道…
function completeHandler(e:Event):void {
//使用e.currentTarget.loader
//就可以得到發出件的Loader了
}
匿名表示…
老師您好:
我需要載入約十張照片
關於第3個按鈕部分,我有新增按鈕,按鈕命名為b2(因為第一個按鈕為b0,我是以此類推),
程式新增:b2.onRelease = clickHandler;
請問這樣對嗎?
(我是試成功按鈕部分可按,有放入其他圖片,
圖片皆有按照順序命名,但對應不到載入的圖片,問題如下)

下面這邊怎麼改都不對
function clickHandler ():Void {
if(this == b0){
loadImage("1.jpg");
}else{
loadImage("2.jpg");
}
}

之後
我看到老師幫別人回答載入多張圖片的問題
所以我將
function clickHandler ():Void {
改成
function completeHandler(e:Event):void {
後面語法也反覆寫出不同的組合,
但是怎麼試都不成功,
可以麻煩老師幫我寫出載入多張圖片的程式嗎?
雖然很冒昧打擾老師,不過我很需要研究,
所以要麻煩老師幫忙。
milkmidi寫道…
.onRelease是AS2的寫法
你是要問AS2呢,還是AS3呢
匿名表示…
不好意思!忘了說,我需要的是AS2!謝謝!
milkmidi寫道…
b2.onRelease = clickHandler;
function clickHandler ():Void {
if(this == b0){
loadImage("1.jpg");
}else if(this == b1){
loadImage("2.jpg");
}else if(this == b2){
loadImage("3.jpg");
}
}
匿名表示…
謝謝老師!
原來我一直試不成功是因為我沒加(this == b2){
^^很謝謝老師!
匿名表示…
老師,請問AS2
假設時間軸上1~10影格
我第一影格是做"Tweener載入圖片特效"
然後我做一個按鈕
在第10影格設標籤,要使按了按鈕後能跳到第10格影格

但跳到第10影格後
載入的圖片會一直出現
照理說我設標籤,要讓他跳到影格10
但載入圖片沒有因為跳標籤影格而不見
載入圖片一直顯示在上面

該寫什麼程式,讓Tweener特效跳標籤影格後,載入圖片也能隨之消失呢?
milkmidi寫道…
那就手動把他移除了
xxx_mc.removeMovieClip();
這樣即可
匿名表示…
謝謝老師都很有耐心幫我解答問題!^^
真的很感激!!!
marc表示…
老師,請問一下,如果我要像
http://www.albertlan.com/client/mocafusion/
裡面的WORKS一樣,要一點進去就自動load第一張圖片,我要加哪句語法,然後那句語法位置要放在誰和誰的中間呢?我需要的是AS2。謝謝老師!
milkmidi寫道…
加這行即可
loadImage("1.jpg");
匿名表示…
老師想請問一下,為什麼AS3.0的寫法,你直接用loadImage就可以載入圖片了,而沒有用到URLRequest,我改成用URLRequest反而無法載入圖片呢?
列夫寫道…
樓上的兄弟,
loadImage("值'')是奶綠老師包裝的一個方法

"function loadlmage (值) { 內容 }",

內容裡兩個tweener函式庫方法的動作,在最後一個onComplete:function(){
ldr.load(new URLRequest(pURL));
} 方法

意思是tweener動作完成後,會執行新的方法,這個方法就是你常用的載入圖片AS3.0寫法
milkmidi寫道…
謝謝列夫的回答
我再補充一下
包成function的好處
就是可以漸化程式碼
以我寫的範例檔
每次都固定要做的事
1.載圖,
2.變亮
3.由亮變回來
這三件事
如果每次按一張圖片, 就要寫這三行程式碼,不是很麻煩嗎
那就把他包裝成一個指令
按一下就可以一次跑完
就像使用Photoshop的Action一樣
把要做的事先錄起來
按下去後,就可以批次做完
Orange寫道…
老師您好,我想請教一下
如果我想加入“下一張”和“上一張”功能按鈕,as2應該怎樣寫。謝謝
匿名表示…
老師想請問一下,tweener能否做淡入淡出的效果?參考您書中的範例,可以將PV3D中的物件移動,但若想將物件以淡出方式隱藏,在tweener中設定該物件visible:true,這樣的效果看到物件直接消失,沒有淡出的效果,不知老師能指點一下嗎?謝謝
milkmidi寫道…
將visible:false
改成alpha:0
如果是PV3D的物件話
要開啟useOwnContainer屬性喔
匿名表示…
老師請教一下,PV3D中已經建立好的物件寬度、高度,能否在tweener中放大縮小?例如cube的寬度、高度,物件建立時就已經設定好寬度和高度,Tweener中是否就沒辦法讓這個方塊寬度或是高度產生變形?
milkmidi寫道…
雖然不能直接重新指定width
但可以更改scaleX,scaleY,scaleZ
這樣試試
milkmidi寫道…
可以參考這篇
http://wonderfl.net/code/9885f475bda5c83ddf64196fc84a967ddb031d8d
去extends Plane
然後透過數學去轉換,就可以有width和height屬性
匿名表示…
老師你好
我移動了載入的位子
但是圖片載出來並沒有對應到一樣的位子
請問要怎麼改??
謝謝
匿名表示…
奶綠大

如果我單純只是要讓他移動要怎麼做?

不要用按鈕式的,要怎麼寫?

從裡面我搞不太懂!

拜託指導一下!
Jessie寫道…
老師~
不好意思 我是一個初學者
我想要請問一下像下面這個網站
http://www.carlmarletti.fr/
我想要練習做類似這網站的東西也可以說特效作法之類是一模一樣
那請問我一開始的flash的文件舞台的大小應該要設定多少呢?
因為我試過用不同解析度的電腦觀看這網站
都能夠完整的顯示也不會有捲軸

另外還有幾個問題
*剛點進去有一個白色刀子往右跑然後主體才出現的那個特效是如何做的呢?

*還有照片滑鼠移過去透明度的變化和點每一個項目他文字變大的速度感覺有彈性的感覺是類似像移動捕間動畫的作法嗎?

*還有每一個項目點進去之後有一個長方形然後再跑loading之後再有一個正方形的東西跑出來最後文字出現的特效是如何做的呢?

*最主要的就是當圖片出現的時候有一種彈性的感覺那是如何做出來的呢?
還有produits-verrines那項目裡面的杯子照片展示方式是用什麼程式語言阿?

不好意思... 問題很多...
如果很難解說的話您可以告訴我google搜尋時我應該打甚麼文字搜尋的到這些做法就可以了~
我可以自己研究沒關係
milkmidi寫道…
Jessie 同學
你的問題我真的很難回答你,可能需要看一下基本的書比較適合
Jessie寫道…
歐好的沒關係~
那我可以請問一下網站裡面produits-verrines那項目裡面的杯子照片展示方式是用什麼程式語言呢?

還有照片顯示的彈性效果又是哪一種程式語言?
匿名表示…
老師您好
努力研究完上述範例,還是有個地方不懂,想請教您了
我用AS3,一共有4個圖檔,以下語法該如何寫呢?期待您回復,謝謝
function clickHandler (e:MouseEvent):void { if(e.currentTarget == b0){ loadImage("1.jpg"); }else{ loadImage("2.jpg"); } }
maimai寫道…
我移動了載入的位子
但是圖片載出來並沒有對應到一樣的位子
請問要怎麼改??謝謝
還是一定要設為置中,無法設定精選想要的x y位置呢?我是用as2.0
Maggie表示…
老師您好,
我想請問,
我做一個舞台,設定為600x800,
上面有6個按鈕,使用"Tweener載入圖片特效",
按了之後就會外連600x800的swf,
目的是滿版並遮住6個按鈕,會另外在外連的swf做個關閉按鈕,回到起初的6個按鈕畫面,

不過,問題是外連的滿版600x800的swf,
即使遮住6個按鈕,按鈕看不到,
但滑鼠移到6個按鈕的位置,還是會顯示手指,
而且可按下並連結其他swf,

請問我該如何,把外連的swf抓進來後,讓被遮住的按鈕不能按呢?

謝謝老師!
Maggie表示…
不好意思,剛剛忘了說是AS2。

這個網誌中的熱門文章

webpack2 入門實戰 1

大家好,我是奶綠茶
前端戰場不再只是寫寫 js / css , 各種框架、前處理工具百花齊放
身為前端工程師,不只要把程式寫完,還要寫好
老師說:選對好工具,事情就完成一半
如果你還在一隻 JS 打完全部程式,一隻 css 寫所有的 style
每次存檔還在手動 reload 網頁, 圖片壓 K 壓到不要不要的
透過奶綠伯的系列教學,讓你了解 webpack2 帶來的優勢
學會 webpack 可能不會加薪,但至少可以準時下班(誤)
1. 安裝 nodejs
請參考 gulp 安裝編

2. 安裝 global webpack , 筆者使用的是 2.2.1 版本
npm i webpack@2.2.1 -g
3. 在專案的根目錄放一隻 webpack.config.js
entry:你的主 js 進入點
output.filename:webpack 打包後的檔名
output.path:webpack 打包後的路徑
var path = require('path'); module.exports = { entry: './src/app.js', output: { filename: 'bundle.js', path: path.resolve(__dirname, 'dist') } };
4. require , module.exports
現在前端都 module 化
可以每個獨立的功能都寫成單一的 js module
除了好管理,也方便讓團隊使用
寫一隻 module_exports_util.js
每隻經過 webpack 打包的 js , 都會是獨立的檔案
所以變數都是私有的, 外部成員都無法得到
在這個 module 裡,我們想開放二個函式
add , getName
所以在最後的 module.exports 指定
筆記加入 jsdoc , 為了方便在開發時,能夠有型別的提示

var name = "milkmidi"; /** * @param {number} num1 * @param {number} num2 * @return {number} */ function ad…

webpack2 入門實戰 3 scss,html,file-loader

大家好,我是奶綠茶
上一篇介紹了 webpack 的核心功能 loader
這篇再來補強各種常用的 loader
css-loader:解悉 css 檔
extract-loader:這個有點難翻,下面會介紹
file-loader:存成實體的檔案, 如圖片
html-loader:解悉 html 檔
sass-loader:解悉 scss 檔
url-loader:解悉圖片路徑
webpack.config.js
module.exports = { resolveLoader: { // 所有用到的 loader, -loader 可以不用打 moduleExtensions: [ "-loader" ], }, resolve: { // 在 require 檔案, 如果不想寫完整的路徑 // 可以加入這些目錄, 讓 webpack 自動尋找對的檔案 // 請注意我們加入了 src/img 路徑,後面會再介紹到 modules: [ path.resolve( 'src/html' ), path.resolve( 'src/img' ), path.resolve( 'src/css' ), path.resolve( 'src/js' ), path.resolve( "node_modules"), ], // 在 require 時可以不用打副檔名 extensions: [ ".js", ".scss" ] }, } 再來就是 loader 的介紹
scss
在這要做多組合的應用
先將 .scss 透過 scss-loader 轉換, 並產生 sourceMap 檔
再過 css-loader
最後再過 style-loader
{ test: /\.scss$/, // 多個 loader 組合, 可寫成一行,或…

Android完全入門篇-01 安裝SDK與裝置USBDriver

大家好,我是奶綠茶
筆者以 Windows 系統來介紹安裝
1. 下載 Android SDK
http://developer.android.com/sdk/index.html
有分 32 位元和 64 位元的版本
為了教學方便,筆者將檔案放置在 D:\ 下
壓開後會有
eclipse資料夾:Eclipse程式碼編譯器
sdk:Android 開發用的 SDK
SDK Manager.exe:sdk管理用的軟體


2. 開啟手機的"開發人員選項"
部份手機該選項被隱藏起來了
要開啟的話,點選"關於手機"
接著連點"版本號碼"七次,就會重新開啟該功能
接著再開啟"USB偵錯"功能
接上你的 USB 線後
這樣你的電腦才能透過 USB 線來偵錯手機的資訊
3. 為裝置安裝 adb usb driver
因為各家廠牌的 Driver 都不同也不通用,所以需要自行 Google 找 Driver
可以用"XXX廠牌 型號 adb usb driver"關鍵字來找
例:HTC Newone adb usb driver
接著找到 我的電腦 / 內容


裝置管理員

會看到一個金嘆號未知的裝置, 按右鍵更新驅動程式軟體

選擇"瀏覽電腦上的驅動程式軟體"

完成後就會看到裝置啟動,並出現 XXX Android ADB Interface

4.測試是否連接成功
進入到第一步下載的 sdk 資料夾裡
D:\adt-bundle-windows-x86_64-20131030\sdk
然後在 platform-tools 資料夾上按住 Shift 鍵,然後再按滑鼠右鍵
選擇"在此處開啟命令視窗"
(此功能只有 Win7 之後的版本才支援, XP使用者就要自行輸入 dos 指令進入到資料夾)
輸入 adb devices
如果看到一串數字,並顯示 device 就表示連線成功
5.新增環境變數(選擇性設定)
為了方便的使用 adb 指令
可以為 windows 設定變數
開啟我的電腦 / 內容 / 左邊的"進階系統設定"
點選下方 環境變數

下方系統變數,找到 Path的選項,按下編輯

在變數值欄位的最後方加入
;D:\adt-b…