不論你在網路上搜尋那一篇談到as3.0鍵盤觸發的文章,作法都是大同小異,而且重點是 "無法產生組合鍵"
底下將描述如何 產生組合鍵邏輯
//請注意 底下程式碼已經簡化過 許多參數未提及,請參考邏輯觀念
var ddd:Array=new Array();
ddd=[0,0,0,0];
//看到陣列也許,許多網友已經知道要如何做了,沒錯我們就是要利用陣列
//產生的數列組合去選擇要做那一個action
stage.addEventListener(KeyboardEvent.KEY_DOWN, reportKeyDown);
stage.addEventListener(KeyboardEvent.KEY_UP, reportKeyUp);
//分為兩個部份DOWN負責紀錄按下,陣列紀錄為1
function reportKeyDown(event:KeyboardEvent):void {
//objKeyboard.pressed=true;
//objKeyboard.keyCode=event.keyCode;
if (event.keyCode==37) {
ddd[0]=1;
}
if (event.keyCode==39) {
ddd[1]=1;
}
if (event.keyCode==38) {
ddd[2]=1;
}
if (event.keyCode==40) {
ddd[3]=1;
}
}
//UP負責紀錄按下,陣列紀錄為0
function reportKeyUp(evt:KeyboardEvent):void {
//objKeyboard.pressed=false;
//objKeyboard.keyCode=null;
if (evt.keyCode==37) {
ddd[0]=0;
}
if (evt.keyCode==39) {
ddd[1]=0;
}
if (evt.keyCode==38) {
ddd[2]=0;
}
if (evt.keyCode==40) {
ddd[3]=0;
}
}
var com_ddd:String=String(ddd[0]+""+ddd[1]+ddd[2]+ddd[3]);
//將字串組合塞到switch做選擇
switch (Number(com_ddd)) {
case 1010 :
trace("左上"); yspeed -= power*1.3;xspeed -= power*1.3;
break;
case 0110 :
trace("右上"); yspeed -= power*1.3;xspeed += power*1.3;
break;
case 1001 :
trace("左下"); yspeed += power*1.3;xspeed -= power*1.3;
break;
case 0101 :
trace("右下"); yspeed += power*1.3;xspeed += power*1.3;
break;
case 0010 :
trace("上"); yspeed -= power*1.3;
break;
case 0001 :
trace("下"); yspeed += power*1.3;
break;
case 1000 :
trace("左"); xspeed -= power*1.3;
break;
case 0100 :
trace("右"); xspeed += power*1.3;
break;
}
Actionscript3.0- Game 鍵盤觸發事件
鍵盤觸發事件 , 我們以遊戲做為例子 分別是控制角色上下左右
底下分成兩部份,先介紹as2.0早期寫法 ,再為各位介紹as3.0 有3種鍵盤寫法!
( as2.0已經不推薦使用囉 )
不論那一種AS3.0寫法 以下都只能做一個事件方向的偵測 ,
兩個方向量無法同時被觸發, 意思就是當然按下 左 & 上時 它只會觸發其一,這解決方法在下一節討論
早期AS2.0寫法
//在onEnterFrame status :
AS3.0鍵盤事件寫法 , 都已改為事件監聽方法, 監聽key是否DOWN 或UP
3.0鍵盤寫法1:
//場景進入立刻 ENTER_FRAME(跟onEnterFrame同道理) 不停的跑report_loop 函數
//一開始 "場景" 監聽鍵盤是否被按下或放開事件
//該report_loop不停的被觸發 接收 keyDown 所得到的 xspeed 與 yspeed 值 來做磨擦力與物件位移
//當事件觸發 鍵盤按下 就觸發以下條件
3.0鍵盤寫法2:
//一樣分為KEY DOWN與UP,
//不同的是,當DOWN觸發的事件內容,透過自定參數來判斷是否按下
3.0鍵盤寫法3:
//以下寫法大家想必都非常熟悉 ,很像 AS2.0 寫法
底下分成兩部份,先介紹as2.0早期寫法 ,再為各位介紹as3.0 有3種鍵盤寫法!
( as2.0已經不推薦使用囉 )
不論那一種AS3.0寫法 以下都只能做一個事件方向的偵測 ,
兩個方向量無法同時被觸發, 意思就是當然按下 左 & 上時 它只會觸發其一,這解決方法在下一節討論
早期AS2.0寫法
//在onEnterFrame status :
if (Key.isDown(Key.LEFT)) {
xspeed -= power;
}
if (Key.isDown(Key.RIGHT)) {
xspeed += power;
}
if (Key.isDown(Key.UP)) {
yspeed -= power;
}
if (Key.isDown(Key.DOWN)) {
yspeed -= power;
}
xspeed *= friction; //磨擦力
yspeed *= friction;
_y += yspeed;
_x += xspeed;
AS3.0鍵盤事件寫法 , 都已改為事件監聽方法, 監聽key是否DOWN 或UP
3.0鍵盤寫法1:
stage.addEventListener(Event.ENTER_FRAME, report_loop);
//場景進入立刻 ENTER_FRAME(跟onEnterFrame同道理) 不停的跑report_loop 函數
stage.addEventListener(KeyboardEvent.KEY_DOWN, reportKeyDown);
//一開始 "場景" 監聽鍵盤是否被按下或放開事件
//該report_loop不停的被觸發 接收 keyDown 所得到的 xspeed 與 yspeed 值 來做磨擦力與物件位移
function report_loop(event:Event):void {xspeed*=friction;yspeed*=friction;mc.y += yspeed;mc.x += xspeed;}
//當事件觸發 鍵盤按下 就觸發以下條件
function reportKeyDown(event:KeyboardEvent):void { if (event.keyCode==Keyboard.RIGHT) { xspeed+=power; } if (event.keyCode==Keyboard.LEFT) { xspeed-=power; } if (event.keyCode==Keyboard.UP) { yspeed-=power; } if (event.keyCode==Keyboard.DOWN) { yspeed+=power; } }//keyDown
3.0鍵盤寫法2:
stage.addEventListener(Event.ENTER_FRAME, report_loop);stage.addEventListener(KeyboardEvent.KEY_DOWN, reportKeyDown);stage.addEventListener(KeyboardEvent.KEY_UP, reportKeyUp);function reportKeyDown(event:KeyboardEvent):void {objKeyboard.pressed=true;objKeyboard.keyCode=event.keyCode;}function reportKeyUp(evt:KeyboardEvent): void{objKeyboard.pressed = false;objKeyboard.keyCode = null;}
//一樣分為KEY DOWN與UP,
//不同的是,當DOWN觸發的事件內容,透過自定參數來判斷是否按下
function reportKeyUp(evt:KeyboardEvent): void{objKeyboard.pressed = false;objKeyboard.keyCode = null;}
var power:Number=0.8;var yspeed:Number=0;var xspeed:Number=0;var friction:Number=0.9;var objKeyboard:Object;objKeyboard={pressed:true,keyCode:null};
function report_loop(event:Event):void {xspeed*=friction; yspeed*=friction; mc.y+=yspeed; mc.x+=xspeed; if (objKeyboard.pressed) { //自定參數判斷是否按下 switch (objKeyboard.keyCode) { //利用 switch 判斷key值 case 37 : xspeed += power; break; case 39 : xspeed -= power; break; case 38 : yspeed += power; break; case 40 : yspeed -= power; break; } } }
3.0鍵盤寫法3:
//以下寫法大家想必都非常熟悉 ,很像 AS2.0 寫法
if (objKeyboard.keyCode==37) {xspeed+=power;}if (objKeyboard.keyCode==39) {xspeed-=power;}if (objKeyboard.keyCode==38) {yspeed+=power;}if (objKeyboard.keyCode==40) {yspeed-=power;}
Actionscript - flash 呼叫 javascript 廣告縮放大小
如果我們需要從flash裡控制html網頁裡的div元素,可以用Flash呼叫Javascript的控制div隱藏或出現的function ,做法如下:
註':請注意測試時 需要把檔案放到server上進行瀏覽!
在Flash裡的button物件或movie clip鍵入:
getURL("javaScript:hideItem('div01'); javaScript:showItem('div02');");
//使用getURL 呼叫
另外在html裡裡輸入:
<script type="text/javascript">
<!--
function hideItem(div02) {hiddenID = document.getElementById(div02); hiddenID.style.display = "none";}
function showItem(div01) {shownID = document.getElementById(div01); shownID.style.display = "block";}
//-->
</script>
<div id="div01" style="display:block;">
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="150" height="100">
<param name="movie" value="div01.swf">
<param name="quality" value="high">
<embed src="div01.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="150" height="100"></embed>
</object>
</div>
<div id="div02" style="display:none;>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="550" height="400">
<param name="movie" value="div02.swf">
<param name="quality" value="high">
<embed src="div02.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="550" height="400"></embed>
</object>
</div>
觀看效果:http://rss2.rulingcom.com/DEMO24_JOHN/flash_js
範例下載
我套flash的模版做了一個網頁...而背景圖是連結外部的swf..然
後當我置入DW裡去..F12預覽時..發理背景圖的SWF無法顯示..只
顯示了原本的模版...請問要如何解決
桃園易達嚴選汽車賣場~0918-137119~.
保證實車拍攝,絕無造假不讓您白跑一趟。
外縣市朋友來電預約,補貼您車馬費。
提供火車站、高鐵站、機場接送服務,用心讓您看的見。
來源絕對正常,里程保證、車況保證、保固及配合原廠鑑定。
請給我一個機會結交您這位朋友讓我為您服務,
本賣場車流動速度很快,請一定要先來電詢問唷。預約就送精美小禮物唷。
http://tw.myblog.yahoo.com/a87163500
e0en373t2vco2nc5
註':請注意測試時 需要把檔案放到server上進行瀏覽!
在Flash裡的button物件或movie clip鍵入:
getURL("javaScript:hideItem('div01'); javaScript:showItem('div02');");
//使用getURL 呼叫
另外在html裡裡輸入:
<script type="text/javascript">
<!--
function hideItem(div02) {hiddenID = document.getElementById(div02); hiddenID.style.display = "none";}
function showItem(div01) {shownID = document.getElementById(div01); shownID.style.display = "block";}
//-->
</script>
<div id="div01" style="display:block;">
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="150" height="100">
<param name="movie" value="div01.swf">
<param name="quality" value="high">
<embed src="div01.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="150" height="100"></embed>
</object>
</div>
<div id="div02" style="display:none;>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="550" height="400">
<param name="movie" value="div02.swf">
<param name="quality" value="high">
<embed src="div02.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="550" height="400"></embed>
</object>
</div>
觀看效果:http://rss2.rulingcom.com/DEMO24_JOHN/flash_js
範例下載
- 留言者: 千
- Email: squaresquare2001@yahoo.com.tw
- 網址:
- 日期: 2010-08-25 10:41:48
我套flash的模版做了一個網頁...而背景圖是連結外部的swf..然
後當我置入DW裡去..F12預覽時..發理背景圖的SWF無法顯示..只
顯示了原本的模版...請問要如何解決
- 留言者: luannr0k5266
- Email:
- 網址:
- 日期: 2013-06-25 03:41:10
桃園易達嚴選汽車賣場~0918-137119~.
保證實車拍攝,絕無造假不讓您白跑一趟。
外縣市朋友來電預約,補貼您車馬費。
提供火車站、高鐵站、機場接送服務,用心讓您看的見。
來源絕對正常,里程保證、車況保證、保固及配合原廠鑑定。
請給我一個機會結交您這位朋友讓我為您服務,
本賣場車流動速度很快,請一定要先來電詢問唷。預約就送精美小禮物唷。
http://tw.myblog.yahoo.com/a87163500
e0en373t2vco2nc5
Actionscript - mailto 探討
以下都是as2.0寫法
這是基本型態
on (release) {
getURL("mailto:自己的電子信
箱");
}
加主旨
on (release) {
getURL("mailto:你想顯示文字<自己的電子信箱>?subject=你要的主旨");
}
加內文寫法
on
(release) {
getURL("mailto:你想顯示文字<自己的電子信箱>?subject=你要的主旨&
amp;
body=你要的內容");
}
需要斷行時請加 %0D%0A
on
(release) {
getURL("mailto:你想顯示文字<自己的電子信箱>?subject=你要的
主旨&body=你要的內容%0D%0A你
要的內容第二行%0D%0A你要的內容第三行");
這是基本型態
on (release) {
getURL("mailto:自己的電子信
箱");
}
加主旨
on (release) {
getURL("mailto:你想顯示文字<自己的電子信箱>?subject=你要的主旨");
}
加內文寫法
on
(release) {
getURL("mailto:你想顯示文字<自己的電子信箱>?subject=你要的主旨&
amp;
body=你要的內容");
}
需要斷行時請加 %0D%0A
on
(release) {
getURL("mailto:你想顯示文字<自己的電子信箱>?subject=你要的
主旨&body=你要的內容%0D%0A你
要的內容第二行%0D%0A你要的內容第三行");
- 留言者: naomihsu
- Email:
- 網址:
- 日期: 2010-12-18 05:56:18
ActionScript3.0 - addChild()
addChild 是呼叫 元件庫 裡元件的方法,或者可以說用as new出來的物件 要增加到場景上,就得靠addChild
1.打開元件庫 將 建立好的movieclip 對其按右鍵 "屬性" ---> 選擇 "匯給actionscript 使用"
|
|
----> 在 類別的欄位填上 Ball
註:或是你在對物件設為元件時,也可以順便設定此項目
2.var ball_mc:Ball = new Ball(); // new 一個Ball 方法
addChild( ball_mc ) ; //光是new 還不夠, new 出只是一個語法 還要透過addChild 把實體物件增加到場景中
在這裡注意 , addChild()前面不加任何東西是省略了root , 如果你想addChild 到別的movielcip
就要改成:
root.Sample_mc.addChild() //這裡以Sample_mc 做舉例
接著便可以對它操控
ball_mc.x=100;
ball_mc.y=200;
3.當然你也可以使用迴圈 讓它一次大量產生
var i:Number;
for(i=1;i<20;i++){
var ball_mc:Ball = new Ball();
addChild( ball_mc ) ;
ball_mc.x=100;
ball_mc.y=200;
}
1.打開元件庫 將 建立好的movieclip 對其按右鍵 "屬性" ---> 選擇 "匯給actionscript 使用"
|
|
----> 在 類別的欄位填上 Ball
註:或是你在對物件設為元件時,也可以順便設定此項目
2.var ball_mc:Ball = new Ball(); // new 一個Ball 方法
addChild( ball_mc ) ; //光是new 還不夠, new 出只是一個語法 還要透過addChild 把實體物件增加到場景中
在這裡注意 , addChild()前面不加任何東西是省略了root , 如果你想addChild 到別的movielcip
就要改成:
root.Sample_mc.addChild() //這裡以Sample_mc 做舉例
接著便可以對它操控
ball_mc.x=100;
ball_mc.y=200;
3.當然你也可以使用迴圈 讓它一次大量產生
var i:Number;
for(i=1;i<20;i++){
var ball_mc:Ball = new Ball();
addChild( ball_mc ) ;
ball_mc.x=100;
ball_mc.y=200;
}
Actionscript 3.0 - 1120: 存取未定義的屬性 1065 , 1061呼叫未定義
1120: 存取未定義的屬性
這是AS3.0常出現的錯誤, 表示你所使用的方法 在as2.0是正確
只是因為 as3.0 嚴謹模式下 要求嚴刻的寫法 才會造成
(如果不想出現這個東西 麻煩請到 發怖設定 actionscript3.0 旁邊的"設定"
將嚴 謹模式取消)
例子1:
你只寫 root.x1=2; //就會產生以上錯誤訊息
(將 嚴謹模式勾掉之後就不會出現錯誤訊息)
或是將式子寫的嚴謹一些
var x1:Number;
root.x1=2;
例子2:
root.A_mc.x=1;
嚴謹寫法改為:
root[A_mc].x=1;
ReferenceError: Error #1065: 變數 未定義
語法裡呼叫變數 找不到或是命稱錯誤
譬如你在語法裡呼叫
A_mc.addEventListener
卻出現以上訊息 表示你場景裡找不到 A_mc 這物件名稱 或是命名錯誤
1061 :呼叫可能未定義屬性
即使你在as2.0 是使用這樣的情況
_root.gotoAndStop()
在as3.0 改成
root.gotoAndStop() // 依然還是會發生錯誤
嚴謹下請改成
MovieClip(root).gotoAndStop();
("編號","場景");A電腦可以執行而B電腦會發生錯誤...是那裡出
問題呢?
不錯,看了就推,這是美德!
網址:http://www.callmeshop.com/investment.php
商機處處有,等您來發掘。
乽勗
這是AS3.0常出現的錯誤, 表示你所使用的方法 在as2.0是正確
只是因為 as3.0 嚴謹模式下 要求嚴刻的寫法 才會造成
(如果不想出現這個東西 麻煩請到 發怖設定 actionscript3.0 旁邊的"設定"
將嚴 謹模式取消)
例子1:
你只寫 root.x1=2; //就會產生以上錯誤訊息
(將 嚴謹模式勾掉之後就不會出現錯誤訊息)
或是將式子寫的嚴謹一些
var x1:Number;
root.x1=2;
例子2:
root.A_mc.x=1;
嚴謹寫法改為:
root[A_mc].x=1;
ReferenceError: Error #1065: 變數 未定義
語法裡呼叫變數 找不到或是命稱錯誤
譬如你在語法裡呼叫
A_mc.addEventListener
卻出現以上訊息 表示你場景裡找不到 A_mc 這物件名稱 或是命名錯誤
1061 :呼叫可能未定義屬性
即使你在as2.0 是使用這樣的情況
_root.gotoAndStop()
在as3.0 改成
root.gotoAndStop() // 依然還是會發生錯誤
嚴謹下請改成
MovieClip(root).gotoAndStop();
- 留言者:
- Email:
- 網址:
- 日期: 2011-01-31 00:48:24
("編號","場景");A電腦可以執行而B電腦會發生錯誤...是那裡出
問題呢?
- 留言者:
- Email:
- 網址:
- 日期: 2012-05-31 22:23:22
不錯,看了就推,這是美德!
網址:http://www.callmeshop.com/investment.php
商機處處有,等您來發掘。
乽勗
ActionScript - eval( ) this[ ] 觀念
說到 eval 這是 flash4 早期版本就有的東西
因為 早期 flash 5 不能使用 eval 所以被this[ ] 方法取代
到
現在還會用的人 有兩種情況 很早就使用flash , 再來就是java用習慣了
我舉個例子:
_root.createEmptyMovieClip("nn"+i,
i); //以nn+i 命名建立一個movieclip
var pp = eval("nn"+i); // nn+i 這一串東西用
pp 取代
pp._alpha=50; //意思 現在的pp 就等於 nn(字串)+i(變數)
但某些時候我們又一定
要用到 eval
//setProperty
意思 對 square+i+_mc 物件 的 _rotation(旋轉度) 設為5
//但變數擺在方法裡 以上的寫法是絕對行不通 會產生錯誤
//所
以這時候 eval 就來了 將命稱與變數包起來用
for (var i = 1; i <= 3;
i++) {
setProperty(eval("square"+i+"_mc"), _rotation, 5);
}
當然了 沒人規定 沒有eval 就活不下去了
以我的寫法:
因為 早期 flash 5 不能使用 eval 所以被this[ ] 方法取代
到
現在還會用的人 有兩種情況 很早就使用flash , 再來就是java用習慣了
我舉個例子:
_root.createEmptyMovieClip("nn"+i,
i); //以nn+i 命名建立一個movieclip
var pp = eval("nn"+i); // nn+i 這一串東西用
pp 取代
pp._alpha=50; //意思 現在的pp 就等於 nn(字串)+i(變數)
但某些時候我們又一定
要用到 eval
for (var i = 1; i <= 3; i++) { setProperty(square+i+_mc, _rotation, 5); }
//setProperty
意思 對 square+i+_mc 物件 的 _rotation(旋轉度) 設為5
//但變數擺在方法裡 以上的寫法是絕對行不通 會產生錯誤
//所
以這時候 eval 就來了 將命稱與變數包起來用
for (var i = 1; i <= 3;
i++) {
setProperty(eval("square"+i+"_mc"), _rotation, 5);
}
當然了 沒人規定 沒有eval 就活不下去了
以我的寫法:
for (var i = 1; i <= 3; i++) { this["square"+i+"_mc"]._rotation = -5; }
this["square"+i+"_mc"] //開頭以[]將變數包起來用 //是很重要的用法 一定要學起來
Actionscript3.0 - Slider(滑動桿,滑桿)
Slider 滑桿 在 Actionscript3.0 , 有內建的 Slider bar 可使用 ,
以下介紹 內建 Slider bar , 與 作者我自製的 Slider
----內建 Slider bar --------
import fl.controls.Slider;
import fl.events.SliderEvent;
//instantiate slider
var s:Slider = new Slider();
//position slider
s.move(50,331);
// control if slider updates instantly or after mouse is released
s.liveDragging = true;
//set size of slider
s.setSize(100,0);
//set maximum value
s.maximum = 100;
//set mininum value
s.minimum = 0;
//set tick position interval, you do not have to set this
s.tickInterval = 10;
// this is a listener that broadcasts evertime an event changes
s.addEventListener(SliderEvent.CHANGE, Change_size);
//add slider to stage
addChild(s);
//gets called on change
function Change_size(e:SliderEvent):void {
//trace("Slider value is now: " + e.target.value);
ALERTER.text = e.target.value;
logo_mc.scaleX=e.target.value/30;
logo_mc.scaleY=e.target.value/30;
}
----自製 Slider -------------------------------------------------
//設定bar初始位置
bar.x=bar_bg.x;
bar.y=bar_bg.y;
//按紐事件分為兩部份DOWN與UP ,在此注意 UP是由stage 事件觸發
bar.addEventListener(MouseEvent.MOUSE_DOWN,drag);
stage.addEventListener(MouseEvent.MOUSE_UP,stop_drag);
//當 Mouse按下bar或放開時 就觸發以下 loop
function loop(e:Event){
//以下設定 是在設定 bar 限制在bar條範圍移動
bar.y=bar_bg.y;
if(bar.x<=bar_bg.x)bar.x=bar_bg.x;
if(bar.x>=bar_bg.x+bar_bg.width)bar.x=bar_bg.x+bar_bg.width
//trace((bar.x-bar_bg.x)/1.24);
//將移動距離換算成%比 或是依情況自行修改間距
logo.scaleX=(bar.x-bar_bg.x)/8;
logo.scaleY=(bar.x-bar_bg.x)/8;
}
//bar被按下時開始拖拉
function drag(e:MouseEvent){
bar.startDrag();
addEventListener(Event.ENTER_FRAME,loop);
}
//bar即使在bar以外地方放開 一樣解除拖拉
function stop_drag(e:MouseEvent):void{
bar.stopDrag();
addEventListener(Event.ENTER_FRAME,loop);
}
範例下載 (自行將檔案副檔名改為rar)
可是無法下載
請問可以寄到我信箱嗎?
精美禮品送完即止
訂購 aaashops.com
-唖吋叿唉件
以下介紹 內建 Slider bar , 與 作者我自製的 Slider
----內建 Slider bar --------
import fl.controls.Slider;
import fl.events.SliderEvent;
//instantiate slider
var s:Slider = new Slider();
//position slider
s.move(50,331);
// control if slider updates instantly or after mouse is released
s.liveDragging = true;
//set size of slider
s.setSize(100,0);
//set maximum value
s.maximum = 100;
//set mininum value
s.minimum = 0;
//set tick position interval, you do not have to set this
s.tickInterval = 10;
// this is a listener that broadcasts evertime an event changes
s.addEventListener(SliderEvent.CHANGE, Change_size);
//add slider to stage
addChild(s);
//gets called on change
function Change_size(e:SliderEvent):void {
//trace("Slider value is now: " + e.target.value);
ALERTER.text = e.target.value;
logo_mc.scaleX=e.target.value/30;
logo_mc.scaleY=e.target.value/30;
}
----自製 Slider -------------------------------------------------
//設定bar初始位置
bar.x=bar_bg.x;
bar.y=bar_bg.y;
//按紐事件分為兩部份DOWN與UP ,在此注意 UP是由stage 事件觸發
bar.addEventListener(MouseEvent.MOUSE_DOWN,drag);
stage.addEventListener(MouseEvent.MOUSE_UP,stop_drag);
//當 Mouse按下bar或放開時 就觸發以下 loop
function loop(e:Event){
//以下設定 是在設定 bar 限制在bar條範圍移動
bar.y=bar_bg.y;
if(bar.x<=bar_bg.x)bar.x=bar_bg.x;
if(bar.x>=bar_bg.x+bar_bg.width)bar.x=bar_bg.x+bar_bg.width
//trace((bar.x-bar_bg.x)/1.24);
//將移動距離換算成%比 或是依情況自行修改間距
logo.scaleX=(bar.x-bar_bg.x)/8;
logo.scaleY=(bar.x-bar_bg.x)/8;
}
//bar被按下時開始拖拉
function drag(e:MouseEvent){
bar.startDrag();
addEventListener(Event.ENTER_FRAME,loop);
}
//bar即使在bar以外地方放開 一樣解除拖拉
function stop_drag(e:MouseEvent):void{
bar.stopDrag();
addEventListener(Event.ENTER_FRAME,loop);
}
範例下載 (自行將檔案副檔名改為rar)
- 留言者: yo
- Email: ooifp205@hotmail.com
- 網址:
- 日期: 2010-08-31 11:24:46
- 留言者: HOKO
- Email: jjy5130@yahoo.com.tw
- 網址:
- 日期: 2012-05-11 00:34:40
可是無法下載
請問可以寄到我信箱嗎?
- 留言者: kristoh7k8ok
- Email:
- 網址: http://aaashops.com
- 日期: 2013-04-27 03:42:16
精美禮品送完即止
訂購 aaashops.com
-唖吋叿唉件
Actionscript - 物件跟隨滑鼠移動
物件跟隨滑鼠移動
那麼我們先來討問一下 數學邏輯的問題
1.首先假設 滑鼠移動 右下角 物件要跟隨滑鼠到右下角
在數學上的意義是:
物件的座標 要與 滑鼠的座標 相同 ,物件才有可能移到滑鼠的位置
不管是那一個方位
我們只重視座標
2.物件要移動到跟滑鼠一樣座標 就是算出其 x 與 y的差距
你的滑鼠與 物件在 x方向 跟
y方向到底差了多少距離
就是我們要移動的距離
但實際上我們是 平移 或是垂直移動嗎 ? 都不是 ,我們是隨著滑鼠
直線移動過去
相信你學過 物理 要算出斜邊 需要藉由 x 與 y方向同時組合
產生一組方向量
當然了對flash來說 不用顧慮那麼多
管它的 反正就是把 _x _y 量給它就是了
3.
(_xmouse-ball._x) x的差距 與 (_ymouse-ball._y) y的差距
//請畫一個球 命名為ball
onEnterFrame=function(){
ball._x+=(_xmouse-ball._x);
ball._y+=(_ymouse-ball._y);
}
以
上的式子為as2.0原式, 意思就是 滑鼠到那 球就跟到那
因為 球跟滑鼠的變動量一算出變量 就把變量直接給球 造成球粘著滑鼠
我
們希望 漸漸的靠近 (漸漸的意思就是慢慢靠近 越來越慢)
因此我們把 (_xmouse-ball._x)每一次得到的距離都
除以某一個數
假設是4 , (_xmouse-ball._x)/4 讓每一次都以距離的1/4前進做累加
onEnterFrame=function(){
ball._x+=(_xmouse-ball._x)/4;
ball._y+=(_ymouse-ball._y)/4;
}
有任何問題歡迎來信與我討論
這個方法我知道...
但是遇到這個情況:
http://rolfuson.why3s.cc/askHow.htm
的時候不知道也適不適用...
原因是因為在 xscale 和 yscale 調整時
x 和 y 的座標會變
這樣就不能定位了...
請問有3.0的語法可以供參考嗎??
我把語法修改後變成以下:
Stage.addEventListener(EVENT.ENTER_FRAME,
MouseMove){
ball.x+=(mouseX-ball.x)/4;
ball.y+=(mouseY-ball.y)/4;
}
結果還是有小錯誤..
不知道是不是我誤解板大的意思?!
移動, 應該怎麼寫呢??
感謝您的技術分享!!
已經能夠動了!!!
沒錯~對於語法感覺好像似懂非懂的學習著...
我會多讓自己磨練磨練!
感謝大大賜教XD
HI, 來你這逛逛喔,歡迎來我家參觀喔!醉愛名牌-名牌網購介紹~我的部落格是http://tw.myblog.yahoo.com/qwwopp-365289 歡迎參觀
gd
那麼我們先來討問一下 數學邏輯的問題
1.首先假設 滑鼠移動 右下角 物件要跟隨滑鼠到右下角
在數學上的意義是:
物件的座標 要與 滑鼠的座標 相同 ,物件才有可能移到滑鼠的位置
不管是那一個方位
我們只重視座標
2.物件要移動到跟滑鼠一樣座標 就是算出其 x 與 y的差距
你的滑鼠與 物件在 x方向 跟
y方向到底差了多少距離
就是我們要移動的距離
但實際上我們是 平移 或是垂直移動嗎 ? 都不是 ,我們是隨著滑鼠
直線移動過去
相信你學過 物理 要算出斜邊 需要藉由 x 與 y方向同時組合
產生一組方向量
當然了對flash來說 不用顧慮那麼多
管它的 反正就是把 _x _y 量給它就是了
3.
(_xmouse-ball._x) x的差距 與 (_ymouse-ball._y) y的差距
//請畫一個球 命名為ball
onEnterFrame=function(){
ball._x+=(_xmouse-ball._x);
ball._y+=(_ymouse-ball._y);
}
以
上的式子為as2.0原式, 意思就是 滑鼠到那 球就跟到那
因為 球跟滑鼠的變動量一算出變量 就把變量直接給球 造成球粘著滑鼠
我
們希望 漸漸的靠近 (漸漸的意思就是慢慢靠近 越來越慢)
因此我們把 (_xmouse-ball._x)每一次得到的距離都
除以某一個數
假設是4 , (_xmouse-ball._x)/4 讓每一次都以距離的1/4前進做累加
onEnterFrame=function(){
ball._x+=(_xmouse-ball._x)/4;
ball._y+=(_ymouse-ball._y)/4;
}
有任何問題歡迎來信與我討論
- 留言者: Rolfuson
- Email:
- 網址:
- 日期: 2010-11-18 00:14:34
這個方法我知道...
但是遇到這個情況:
http://rolfuson.why3s.cc/askHow.htm
的時候不知道也適不適用...
原因是因為在 xscale 和 yscale 調整時
x 和 y 的座標會變
這樣就不能定位了...
- 留言者: Wei
- Email:
- 網址:
- 日期: 2010-12-01 11:19:11
請問有3.0的語法可以供參考嗎??
- 留言者: Wei
- Email:
- 網址:
- 日期: 2010-12-07 14:14:15
我把語法修改後變成以下:
Stage.addEventListener(EVENT.ENTER_FRAME,
MouseMove){
ball.x+=(mouseX-ball.x)/4;
ball.y+=(mouseY-ball.y)/4;
}
結果還是有小錯誤..
不知道是不是我誤解板大的意思?!
- 留言者: SHIRO
- Email:
- 網址: http://blog.xuite.net/jpshiro/way
- 日期: 2010-12-08 19:36:31
移動, 應該怎麼寫呢??
感謝您的技術分享!!
- 留言者: Wei
- Email:
- 網址:
- 日期: 2010-12-16 18:35:41
已經能夠動了!!!
沒錯~對於語法感覺好像似懂非懂的學習著...
我會多讓自己磨練磨練!
感謝大大賜教XD
- 留言者: versus11qq
- Email: qjgkkj@yahoo.com.tw
- 網址:
- 日期: 2010-12-31 09:21:51
HI, 來你這逛逛喔,歡迎來我家參觀喔!醉愛名牌-名牌網購介紹~我的部落格是http://tw.myblog.yahoo.com/qwwopp-365289 歡迎參觀
gd
Actionscript3.0-碰撞偵測
在flash actionscript3.0中,碰撞方法有四種:
假若有兩物件,B1,B2
1.Object.hitTestObject(Target)
---------------------------------------------------------------------------------------
if(B1.hitTestObject(B2)){ //TestObject與TestPoint不同點在於一個是碰到物件外框,一個是物件與座標的偵測
trace("碰撞")
}else{trace("沒碰到")}
2.Object.hitTestPoint(Target)
---------------------------------------------------------------------------------------
if(B1.hitTestPoint(B2.x,B2.y,true)){ //請注意 Point部份要輸入碰撞的座標 這裡輸入B2座標
trace(" 碰撞")
}else{trace("沒碰到")}
3.自定義class,以上兩種也許都無法提供你的需求,當你想做物件精密碰撞時
http://justfly.idv.tw/2009/05/25/Just_639.html <--可以至justBlog下載as2.0或3.0方法
---------------------------------------------------------------------------------------
然後用阿法直把它變成0
那我這種碰撞方式用第一種OK嗎?
我的是2.0版本 真不好意思第一個問題忘記說了
麻煩您了
有沒有元件座標隨著影格變動???
本人在碰撞偵測遇到困難...
還行喔。
2013年生肖運勢 - 2013生肖運勢 鼠
今年屬鼠的朋友們,會較易有疲勞精神不濟的狀況,適當的放鬆身心平心靜氣,自然煩惱驟減,若不放心也可以藉由命理上的諮詢來更掌握今年的狀況哦!祝福各位新年愉快!詳細資訊請點進小房子喔!
丸厌
冈倢僕
謝謝,受教嘍。
有體重或便秘問題嗎?
您還在找不當的產品使用嗎?
可三餐正常飲食,不用節食或斷食的好方法喔!
輕鬆的管理您的困擾。
快上服務網站諮詢或下單喔~~
服務網站→http://wen807695.idv.tw/about.asp
刼厢
唈佑
還不錯,加油喔,一起努力!
精美禮品送完即止
訂購網址 aaashops.com
Line帳戶 aaashops.com
請點小房子或是網址進入
偝刷勮乽侌
假若有兩物件,B1,B2
1.Object.hitTestObject(Target)
---------------------------------------------------------------------------------------
if(B1.hitTestObject(B2)){ //TestObject與TestPoint不同點在於一個是碰到物件外框,一個是物件與座標的偵測
trace("碰撞")
}else{trace("沒碰到")}
2.Object.hitTestPoint(Target)
---------------------------------------------------------------------------------------
if(B1.hitTestPoint(B2.x,B2.y,true)){ //請注意 Point部份要輸入碰撞的座標 這裡輸入B2座標
trace(" 碰撞")
}else{trace("沒碰到")}
3.自定義class,以上兩種也許都無法提供你的需求,當你想做物件精密碰撞時
http://justfly.idv.tw/2009/05/25/Just_639.html <--可以至justBlog下載as2.0或3.0方法
---------------------------------------------------------------------------------------
if(HitTest.complexHitTestObject(hit_mc1, hit_mc2 , 5)){ trace(" 碰撞") }else{ trace("沒碰到") } 4.計算兩物件距離 如果你高中數學還記得的話,在圓相交接觸的計算中,有計算到兩個圓是否接觸 沒錯,用的就是計算兩圓心距離是否小於兩物件半逕,說到此相信你已知道該如 做,以距離來延伸做變化.
- 留言者: Z0912256341
- Email:
- 網址:
- 日期: 2010-08-21 23:33:05
然後用阿法直把它變成0
那我這種碰撞方式用第一種OK嗎?
我的是2.0版本 真不好意思第一個問題忘記說了
麻煩您了
- 留言者: seal771006
- Email:
- 網址:
- 日期: 2010-09-17 16:45:09
有沒有元件座標隨著影格變動???
本人在碰撞偵測遇到困難...
- 留言者:
- Email:
- 網址: http://tw.myblog.yahoo.com/taisan-dalofu/
- 日期: 2012-11-07 21:25:17
還行喔。
2013年生肖運勢 - 2013生肖運勢 鼠
今年屬鼠的朋友們,會較易有疲勞精神不濟的狀況,適當的放鬆身心平心靜氣,自然煩惱驟減,若不放心也可以藉由命理上的諮詢來更掌握今年的狀況哦!祝福各位新年愉快!詳細資訊請點進小房子喔!
丸厌
- 留言者: diegoedmomed
- Email:
- 網址: http://wen807695.idv.tw/boardlist.asp
- 日期: 2012-11-09 01:53:11
冈倢僕
謝謝,受教嘍。
有體重或便秘問題嗎?
您還在找不當的產品使用嗎?
可三餐正常飲食,不用節食或斷食的好方法喔!
輕鬆的管理您的困擾。
快上服務網站諮詢或下單喔~~
服務網站→http://wen807695.idv.tw/about.asp
刼厢
唈佑
- 留言者: rosaliy2nd57
- Email:
- 網址: http://aaashops.com
- 日期: 2013-01-13 16:02:14
還不錯,加油喔,一起努力!
精美禮品送完即止
訂購網址 aaashops.com
Line帳戶 aaashops.com
請點小房子或是網址進入
偝刷勮乽侌
訂閱:
文章 (Atom)