createjs之preload

楼主记忆力不好,最近刚好用了一下createJs框架,怕以后一段时间没用后会忘记,所以在此做个记录,或许以后用得着。

  createJs网上的中文教程挺少的,以前UC有个Xcanvas的论坛有createJs的详细教程,但是随着XCanvas团队的解散,那个网站也关闭了。。网上的大部分都是非常基础的教程,有点千遍一律的感觉。所以楼主就去把createJs下载下来,硬着头皮看英文文档了。凭着楼主这英语六级只考了三百多分的渣渣来说,看起来很费力啊,不过还是勉强摸索出了大概的用法。所以现在就是学了多少就记录多少,之后或许也会不定期更新一下该框架的新的学习心得。毕竟对自己以后还是有帮助的。

  希望本文能帮到那些想学createJs的新手。因为楼主也是刚学的,所以本文或许有不正确之处,因此本文仅当参考,若有不正之处欢迎斧正。

  闲话说到这,直接进入主题。

  楼主用createJs写了个简单的跑酷游戏DEMO,就拿它做例子吧。 看DEMO戳我。

  createJs的由来,基础什么的就不说了,就直接说createJs的用法吧。

  首先到createJs官网下载,createJs分成easelJs(图形动画)、preloadJs(文件加载)、soundJs(音频控制)以及tweenJs(补间动画)四部分,大家下载的时候,建议下载两个文件,一个是压缩版文件,用于项目中的引用,再下载个源码文件,用于查看用法、API、demo等。因为楼主目前只用了easelJs和preloadJs,所以暂时就只说这两个,其实就这两个已经非常够用了。

  接下来开始分析代码:

  首先引入js文件

双击代码全选

1

2

<script src="easeljs-0.7.1.min.js"></script>

<script src="preloadjs-0.4.1.min.js"></script>

  然后进行舞台初始化操作:


function init(){

            stage = new createjs.Stage("cas");

            C_W = stage.canvas.width;

            C_H = stage.canvas.height;

     

            var manifest = [

                {src:"image/man.png" , id:"man"},

                {src:"image/ground.png" , id:"ground"},

                {src:"image/bg.png" , id:"bg"},

                {src:"image/high.jpg" , id:"high"},

                {src:"image/coins.png" , id:"coin"}

            ]

     

            loader = new createjs.LoadQueue(false);

            loader.addEventListener("complete" , handleComplete);

            loader.loadManifest(manifest);

     

            drawLoading();

        }

上面就用到了preloadJs中的方法,实例化一个loader,把需要加载的图片文件放在manifest里面,进行加载,加载完成后调用回调handleCompelete函数:


function handleComplete(){        //当图片素材load完后执行该方法

            var manImage = loader.getResult("man"),

                lowground = loader.getResult("ground"),

                highground = loader.getResult("high"),

                bgImage = loader.getResult("bg"),

                coins = loader.getResult("coin");

     

            sky = new createjs.Shape();

            sky.graphics.bf(bgImage).drawRect(0,0,C_W,C_H);

            sky.setTransform(0, 0, 1 , C_H/bgImage.height);

            stage.addChild(sky);

     

            man = createMan(200,326,manImage);

     

            //该框为判定角色的判定区域

            kuang = new createjs.Shape();

            kuang.graphics.beginStroke("rgba(255,0,0,0.5)").drawRect(0 , 0 , man.size().w , man.picsize().h*1.5);

            // stage.addChild(kuang);

     

            mapHandle(lowground , highground , coins);

     

            createjs.Ticker.timingMode = createjs.Ticker.RAF;//设置循环方法,可以是requestAnimationFrame或者是setTimeout

            createjs.Ticker.setFPS(30);//舞台帧率控制

            createjs.Ticker.addEventListener("tick", tick);//绑定舞台每一帧的逻辑发生函数

     

            window.addEventListener("keydown" , function(event){

                event = event||window.event;

                if(event.keyCode===32&&man.jumpNum<man.jumpMax){

                    man.jump();

                }

            })

        }

获得加载完成后端的图片数据就直接用loader.getResult就可以获取了,跑酷游戏需要一个背景,所以,我们实例化一个sky,然后进行位图绘制,bf方法是beginBitmapFill的缩写,该方法就是开始绘制位图,后面的drawRect是位图的绘制区域,区域当然是整个画布啦,所以就是drawRect(0,0,C_W,C_H)。实例化出来sky后就直接添加到舞台stage里面就行了。接下来是实例化一个角色,createMan方法后面有说,是自己封装的


你可能感兴趣的:(createjs)