跳到主要內容

發表文章

目前顯示的是有「JavaScript」標籤的文章

JavaScript Namespae(命名空間)

大家好,我是奶綠茶 今天來討論 JavaScript Namesapce 命名空間 首先來了解一下 JS 的變數命名原理 var myVar = "milkmidi"; // 我是其他的程式碼 // 我是其他的程式碼 // ... // 我是其他的程式碼 var myVar = 0; 可以發現 myVar 被宣告了二次 而後者變數會蓋掉前則 function 也是一樣的原理 function myFun(){ } // 我是其他的程式碼 // 我是其他的程式碼 // ... // 我是其他的程式碼 function myFun(){ // 蓋掉之前同名的 myFun 函式 } 當然自己寫的程式不會發生同變數/函式 但如果跟其他人一起 Team Work 時,難保別人寫的名稱和你一樣 為了避免互蓋的問題 所以我們引用了 Namespace 的方法 但 JS 並沒有真正的 Namespace 而且是 Object 來模擬 // 用 Object 來當 Namespace // 變數名稱就用自己的英文名來命名 var milkmidi = {}; milkmidi.myVar = "milkmidi"; milkmidi.myFun = function(){ } // 我是其他的程式碼 // 我是其他的程式碼 // ... // 我是其他的程式碼 var otherPartner = {}; otherPartner.myVar = "otherPartner"; otherPartner.myFun = function(){ } // 要呼叫自己寫的函式就用 milkmidi.myFun(); // 同事寫的就用 otherPartner.myFun(); 這樣就可以決解彼此互蓋問題。 決解自己蓋自己的命名空間 為了開發方便 會把自己常用的 JS 依功能來分類 JS 命名空間也只是用Object變數來模擬,一樣會發生蓋掉的問題 // script a.js var milkmidi = {}; milkmidi.getTitle = function(){}; // script b.js var milkmidi = {}; milkmidi...

Embedding JavaScript into a SWF

Flash 可以使用 ExternalInterface 類別來呼叫外部的.js函式 但前提是該html需要事件把js寫好 AS3之後, 可以把js的function整個包成.as裡, 一樣透過ExternalInterface 呼叫即可 在這個範例, 我使用了bit101的Button組件, 你可以換成自已的按鈕。 透過 XML 的 CDATA, 把整個js包進.as檔裡。 package { import com.bit101.components.PushButton; import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.external.ExternalInterface; /** * ... * @author milkmidi */ public class EmbedJSExample extends Sprite { public function EmbedJSExample() { stage.align = StageAlign.TOP_LEFT; stage.scaleMode = StageScaleMode.NO_SCALE; new PushButton(this , 0, 0, "Alert", function ():void { ExternalInterface.call( JSScripts.alert , "FlashCallJS" ); }); new PushButton(this , 0, 20, "windowopen", function ():void { ExternalInterface.call( JSScripts.windowOpen , "http://milkmidi.blogspot.com",'400','400' ); }); } } } class JSScripts {...

使用swfObject製作最小寬高的flash

現在大家的解悉度都超高 但一般的使用者還是以1024x768為主 在製作flash滿版設計時, 還是要顧一下一般的解悉度 當使用者的解悉度小於某個值的時候, 就讓scroll出現 這兒有一篇不錯的教學, 使用swfObject 來 embed swf 然後使用 js 來判斷最小寬高 http://www.thetechlabs.com/tutorials/flash/swfobject-and-best-practice-implementation/ 或是使用swffit http://swffit.millermedeiros.com/ 都可以達到一樣的效果

js和as做好朋友

在製作專案時, 有時需讓 as 和 js 溝通 今天就來講解一下如何製作 Flash端使用 flash.external.ExternalInterface類別 ExternalInterface.call("calledFromAs3","flash called js"); 這樣是呼叫 html 裡名為 calledFromAs3 的js 函式, 並把參數帶入 那如果 js 要呼叫 as 呢 在這使用swfObject來embed swf檔 然後給他一個id值為:flashContainer flash端需先駐冊一下函式 ExternalInterface.addCallback("calledFromJs", calledFromJs); public function calledFromJs(pStr:String):void{ trace(pStr) } 然後在網頁就可以使用 function callAS3(var2pass){ if(navigator.appName.indexOf("Microsoft") != -1){ flashContainer.calledFromJs(var2pass); } else{ window.document.flashContainer.calledFromJs(var2pass); } } 還有沒有更高招的, 有滴 AS3 可以無中生由產生一組新的js 函式, 所以不需要事先在html加js函式 使用的方法就是把js的函式寫在as裡的xml cdata裡, 再去呼叫即可 SourceCodeDownload

Flash_加入我的最愛

在製作網站, 想要讓使用者快速的加入我的最愛 在Flash裡要怎麼製作呢? 加入我的最愛的作法, 一定需要使用JavaScript來製作 Flash本身沒辦法, 也不需要有此功能。 透過Flash去呼叫JavaScript來執行加入我的最愛函式即可。 程式碼: 方法1:將整個呼叫JavaScript的函式直接寫在Flash裡 這樣Html裡就不需要加寫JS的函式。 add_mc.addEventListener(MouseEvent.CLICK,onClick); add_mc.buttonMode = true; function onClick(e:MouseEvent):void { if (Capabilities.playerType == "ActiveX") { ExternalInterface.call("window.external.AddFavorite", "http://milkmidi.blopspot.com", "milkmidi.com"); } else { ExternalInterface.call("window.sidebar.addPanel", "milkmidi.com", "http://milkmidi.blopspot.com", ""); } } 方法二: 在html裡寫上JS的函式: Flash端使用 ExternalInterface.call("addFavorite") 呼叫該JS的函式即可。