zoukankan      html  css  js  c++  java
  • FLASH CC 2015 CANVAS (六)如何像FLASH那样实现场景(多canvas)

    注意 此系列贴 为个人边“开荒”边写,所以不保证就是最佳做法,也难免有错误! 正式教程会在后续开始更新。

    swf 项目中,我们可以很容易在一个fla文档里创建多场景。也可以通过多个fla文件发布多个swf项目调用形成一个多场景动画(网站)

    但是在CANVAS 项目中,却发现无法插入场景。(如果你是通过swf 项目转换成canvas 项目,在转换的时候会发现每个场景都自动转换成了一个canvas文档)。所以场景我们目前看来是用不了,那就只剩一条路:多个canvas文档相互调用。

    swf项目中 多个场景调用我们一般都会有一个主swf用来管理 所有子swf、管理全局参数、函数。

    canvas项目 我们管理所有canvas、全局参数、函数应该在html文件里面。

    我们在FLASH CC里每个发布的canvas项目 都会有一个html文件。那么我们应将这些html"合并"成一个。

    最近几天有项目做,所以这篇只能抽空写大家见谅

    我们看到每个html的js中 都包含:

    canvas,stage,exportRoot
    

    canvas 、stage 很好理解,也就不再多说。exportRoot通过前面的文章中你应该也明白了他是管理我们FLASH中所有 函数,元件的地方,方便我们调用,

    其次在html的js中你们还能看到:

    images= images||{};
    //
    loader.loadManifest(lib.properties.manifest);

    这里的images 对应着你fla 文档发布设置中的①,lib对应着你fla文件发布设置中的② 如下图

    通过前面的几篇开荒教程你已经发现每个FLASH CC导出的动画中,canvsa 和 stage 并不会发生改变,只有exportRoot 会根据每个fla文件而不一样。那么我们可不可以使用一个canvas, 和stage 来完成多个FLASH CC 导出的canvas动画呢?

    我们先改变一下:上图中 lib名字改为 lib0 ,上图中 imgages名字改为 img0 

    发布测试,发现html中js 代码有变化:img0,和 lib0 

    img0 = img0||{};
    //
    loader.loadManifest(lib0.properties.manifest);

    想信你看到这里,都已经能够将多个FLASH CC导出的canvas动画放到一个HTML页面了。

    但是这样会放入很多canvas,这并不是我想要的,我只想使用一个canvas。

    那么就需要一点代码基础了,这里我就不将代码逻辑,直接上代码:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>main</title>
    <style>
    body{margin:0px;}
    </style>
    
    <script src="js/jquery-1.11.1.min.js"></script>
    <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="s0.js"></script>
    <script src="s1.js"></script>
    <script>
    var onPage=0,totalPage=2,ldPage=0
    var canvas,stage,exportRoot=[],ld,S=this
    
    $(document).ready(function(e) {
        canvas = document.getElementById("canvas");
        //
        stage = new createjs.Stage(canvas);
        createjs.Ticker.setFPS(24);
        createjs.Ticker.addEventListener("tick", stage);
    });
    window.onload=function()
    {
        inIt()
        loadPage(0)
    }
    
    function inIt()
    {
        ld = new createjs.LoadQueue(false);
        ld.addEventListener("fileload", loaded);
        ld.addEventListener("complete", loadComplete);
    }
    
    function loadPage()
    {
        console.log(ldPage)
        $["img"+ldPage] = $["img"+ldPage]||{};
        ld.loadManifest(S["lib"+ldPage].properties.manifest);
    }
    function loaded(e)
    {
        if (e.item.type == "image") { S["img"+ldPage][e.item.id] = e.result; }
    }
    function loadComplete(e)
    {
        exportRoot[ldPage] = new S["lib"+ldPage]["s"+ldPage]();//s+ldPage是fla名字
        stage.addChild(exportRoot[ldPage]);    
        exportRoot[ldPage].gotoAndStop(2);
        
        if(ldPage<totalPage-1)
        {    
            ldPage++;
            loadPage(ldPage);
        }
        else
        {    
            ld.removeEventListener("fileload", loaded);
            ld.removeEventListener("complete", loadComplete);
            ld=null;
            console.log("Load finish!")    
        }
    }
    
    </script>
    </head>
    
    <body>
        <canvas id="canvas" width="640" height="1136" style="background-color:#333333"></canvas>
    </body>
    </html>

    说明:

    1) 自己修改JQuery的路径

    2) 我用FLASH CC发布了2个canvas动画,fla分别命名为s0,s1 

    3)我每个动画 是从第3帧开始的(js 是第二帧)

    4)发布设置中 分别设置了 lib0,img0 和 lib1,img1

    5)将导出的js都引入到这文件里面

    大功告成,2个动画(场景)成功的利用一个canvas 展现了出来。

    PS:这样的做法我到目前没有发现冲突以及因为这样做的BUG,如果 有朋友发现。请回帖 3Q

  • 相关阅读:
    软件体系架构复习要点
    Operating System on Raspberry Pi 3b
    2019-2020 ICPC North-Western Russia Regional Contest
    2019 ICPC ShenYang Regional Online Contest
    2019 ICPC XuZhou Regional Online Contest
    2019 ICPC NanChang Regional Online Contest
    2019 ICPC NanJing Regional Online Contest
    Codeforces Edu Round 72 (Rated for Div. 2)
    Codeforces Round #583 (Div.1+Div.2)
    AtCoder Beginning Contest 139
  • 原文地址:https://www.cnblogs.com/luoeeyang/p/4702696.html
Copyright © 2011-2022 走看看