FLASH CC 2015 CANVAS (二)html中寫JS調用flash中的元件、函數、變量


 

注意 此貼 為個人邊“開荒”邊寫,所以不保證就是最佳做法,也難免有錯誤! 正式教程會在后續開始更新

 

當你導出第一個canvas后,你會在保存fla的文件夾里 (每個項目默認位置)看到 如下文件,(請先隨便導入一些音樂,和圖片再發布)

我們打開game.html 代碼如下

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>test</title>

<script src="http://code.createjs.com/easeljs-0.8.1.min.js"></script>
<script src="http://code.createjs.com/tweenjs-0.6.1.min.js"></script>
<script src="http://code.createjs.com/movieclip-0.8.1.min.js"></script>
<script src="http://code.createjs.com/preloadjs-0.6.1.min.js"></script>
<script src="http://code.createjs.com/soundjs-0.6.1.min.js"></script>
<script src="test.js"></script>

<script>
var canvas, stage, exportRoot;

function init() {
    canvas = document.getElementById("canvas");
    images = images||{};

    var loader = new createjs.LoadQueue(false);
    loader.installPlugin(createjs.Sound);
    loader.addEventListener("fileload", handleFileLoad);
    loader.addEventListener("complete", handleComplete);
    loader.loadManifest(lib.properties.manifest);
}

function handleFileLoad(evt) {
    if (evt.item.type == "image") { images[evt.item.id] = evt.result; }
}

function handleComplete(evt) {
    exportRoot = new lib.test();

    stage = new createjs.Stage(canvas);
    stage.addChild(exportRoot);
    stage.update();

    createjs.Ticker.setFPS(lib.properties.fps);
    createjs.Ticker.addEventListener("tick", stage);
}

function playSound(id, loop) {
    createjs.Sound.play(id, createjs.Sound.INTERRUPT_EARLY, 0, 0, loop);
}
</script>
</head>

<body onload="init();" style="background-color:#D4D4D4">
    <canvas id="canvas" width="550" height="400" style="background-color:#FFFFFF"></canvas>
</body>
</html>

 

首先script 可以看到加載了幾個js, 如果你不明白可以不用理會。

但是他么都是用的絕對地址,國內使用這個地址 某些時候會比較慢,所以建議在 FLASH軟件里面 設置 發布設置

這樣發布后 html 文件 的js 引入就變成

<script src="libs/easeljs-0.8.1.min.js"></script>
<script src="libs/tweenjs-0.6.1.min.js"></script>
<script src="libs/movieclip-0.8.1.min.js"></script>
<script src="libs/preloadjs-0.6.1.min.js"></script>
<script src="libs/soundjs-0.6.1.min.js"></script>
<script src="test.js"></script>

 

================好了 廢話了這么多 下面講重點==============

導出的 代碼中可以看到聲明了這3個“東西”

var canvas, stage, exportRoot; 這篇帖子我們先說 exportRoot

大家在FLASH CC CANVAS里面 所有命名過的元件、this.聲明的變量、this.聲明函數都將“在” exportRoot 里面(不懂什么叫this 聲明的 那也繼續一步一步往下看)。 這為我們在 html下寫js 調用這些"玩意兒"提供了方便。

比如 你在FLASH CC 里面的根時間軸上有一個元件叫 btnKS ,那么你可以在html里面這樣寫js 來調用它

exportRoot.btnKS

exportRoot.btnKS.on("click", function(e)
    {
        exportRoot.gotoAndStop(2)
     //你甚至可以 使用 greensock的 js 版本來控制他們運動 TweenMax.to(exportRoot.MCA,1,{alpha:0,scaleX:2,scaleY:2,onComplete:function() { exportRoot.removeChild(exportRoot.btnKS) } }) })

 

又比如 你在FLASH CC 里面的跟時間軸上 寫js 

this.htmlF=function(_ss)
{
    console.log(_ss)
}

那么你在HTML中執行這個函數。也是這樣寫

exportRoot.htmlF("這是來自HTML JS的消息")

 

再比如你在FLASH CC 里面的根時間軸上有元件MCA, MCA內部有元件son0,以及MCA的時間軸上有以下代碼

this.mcAF=function(_ss)
{
    console.log(_ss)
}

那么你在HTML中應該這樣調用

exportRoot.mcA.son0
//以及
exportRoot.mcA.mcAF("這也是來自HTML的消息")

 

 

好了上面講了調用元件、函數,那么變量的調用在此:

如果FLASH CC里寫的JS變量要在HTML中被調用,那么就不能再寫 var a=1,應該寫成this.a=1

調用方式同上

 

 

 

順帶說下FLASH CC 生成的HTML中JS代碼的 兩個事件:看函數名就明白了:

handleFileLoad  

handleComplete

 

加載進度 :

function handleFileLoad(evt) {
    if (evt.item.type == "image") { images[evt.item.id] = evt.result; }
  //下面,其實就是api了,自己查閱api即可,如果不知道怎么查,還有一個快捷辦法就是在flash CC 里面打代碼 會有代碼提示
  console.log(loader._numItems,loader._numItemsLoaded) }

 注意 loader 的聲明 在init(),所以要將loader 聲明到全局 或者 將 handleFileLoad函數寫進init()中 即可。更加詳細的加載進程將在后面的章節詳細說明

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM