웹 프론트엔드 H5 튜토리얼 Html5 게임 프레임워크 createJS 컴포넌트 - EaselJS 상세 설명

Html5 게임 프레임워크 createJS 컴포넌트 - EaselJS 상세 설명

Mar 22, 2017 pm 03:13 PM

CreateJS 라이브러리는 HTML5 게임 개발을 위한 엔진으로, HTML5 개발을 줄이는 것을 목표로 풍부한 대화형 경험을 갖춘 HTML5 게임을 구축할 수 있는 오픈 소스 툴킷입니다. 프로젝트의 어려움과 비용을 절감하여 개발자가 친숙한 방식으로 보다 현대적인 온라인 상호 작용 경험을 만들 수 있도록 합니다.

CreateJS를 익히면 HTML5 게임 개발을 더 쉽게 완료할 수 있습니다.

CreateJS는 EaselJS, TweenJS, SoundJS 및 PreLoadJS의 네 가지 도구를 제공합니다.

EaselJS:简化处理HTML5画布
TweenJS:用来帮助调整HTML5和Javascript属性
SoundJS:用来简化处理HTML5 audio
PreLoadJS:帮助管理和协调加载中的一些资源
로그인 후 복사

공식 웹사이트의 다운로드 페이지에서 JS 파일을 다운로드하거나 직접 공식 CDN 링크를 사용할 수 있습니다

EaselJS 라이브러리는 캔버스에 보존된 그래픽 모드를 제공합니다. 여기에는 완전한 계층적 표시 목록, 핵심 상호 작용 모델 및 도우미 클래스가 포함되어 캔버스에서 2D 그래픽을 더 쉽게 구현할 수 있습니다.

시작

먼저 캔버스를 감싸는 Stage 객체를 만들어야 합니다(Canvas) 요소를 선택하고 DisplayObject 객체 인스턴스를 하위 클래스로 추가합니다. EaselJS는 다음을 지원합니다:

* 비트맵을 사용하여 이미지 생성

* 모양 및 그래픽을 사용하여 벡터 그래픽 생성

* SpriteSheet 및 Sprite를 사용하여 동적 비트맵 생성

* 텍스트를 사용하여 간단한 텍스트 만들기

* 컨테이너를 사용하여 다른 표시 개체에 대한 컨테이너 만들기

모든 표시 개체는 스테이지에 하위 클래스로 추가하거나 스테이지에 직접 추가할 수 있습니다. 캔버스에 그려짐 .

사용자 상호 작용

마우스 또는 터치와 상호 작용할 때 DOM 요소를 제외한 모든 표시 객체는 이벤트를 전달할 수 있습니다. EaselJS는 호버, 누르기, 놓기 이벤트는 물론 사용하기 쉬운 드래그 앤 드롭 모듈도 지원합니다. 자세한 내용을 보려면 MouseEvent를 클릭하세요.

인스턴스

1. 비트맵을 사용하여 생성합니다. 이미지

먼저 EaselJS 파일을 참조해야 합니다.

<script src="js/easeljs-0.8.2.min.js"></script>
로그인 후 복사

다음으로 HTML 문서에서 캔버스 요소를 만들어야 합니다.

<canvas id="imageView" width="560" height="410">您的浏览器版本过低,请更换更高版本的浏览器</canvas>
로그인 후 복사

그런 다음 Javascript 코드로 이미지를 생성할 수 있습니다.

// 通过画布ID 创建一个 Stage 实例
var stage = new createjs.Stage("imageView");
// 创建一个 Bitmap 实例
var theBitmap = new createjs.Bitmap("imgs/testImg.jpg");
// 设置画布大小等于图片实际大小
stage.canvas.width = theBitmap.image.naturalWidth;
stage.canvas.height = theBitmap.image.naturalHeight;
// 把Bitmap 实例添加到 stage 的显示列表中
stage.addChild(theBitmap);
// 更新 stage 渲染画面
stage.update();
로그인 후 복사

이렇게 하면 이미지가 성공적으로 생성됩니다. easyljs-image.html 소스 코드를 참조하세요.

2. 모양그래픽을 사용하여 벡터 그래픽을 만듭니다.

위와 동일합니다. EaselJS에 대한 참조를 추가하고 HTML 문서에 캔버스 요소를 생성해야 합니다. 그런 다음 사용자 정의된 js 파일 코드가 있습니다.

//Create a stage by getting a reference to the canvas
var stage = new createjs.Stage("circleView");
//Create a Shape DisplayObject.
var circle = new createjs.Shape();
circle.graphics.beginFill("DeepSkyBlue").drawCircle(0,0,40);
//Set position of Shape instance.
circle.x = circle.y = 50;
//Add Shape instance to stage display list.
stage.addChild(circle);
//Update stage will render next frame
stage.update();
로그인 후 복사

이런 방식으로 중심이 (50.50)이고 반경이 40픽셀인 어두운 하늘색 원을 만듭니다(자세한 내용은 easyljs-shape-circle.html 참조). 소스 코드 ):

렌더링 전 캔버스는 다음과 같습니다(너비와 높이가 100픽셀):

간단한 상호작용 이벤트를 추가할 수도 있습니다:

stage.addEventListener("click",handleClick);function handleClick() {    
// Click happened;
    console.log("The mouse is clicked.");
}
stage.addEventListener("mousedown",handlePress);function handlePress() {    
// A mouse press happened.
    // Listen for mouse move while the mouse is down:
    
    console.log("The mouse is pressed.");
    stage.addEventListener("mousemove",handleMove);
}function handleMove() {    
// Check out the DragAndDrop example in GitHub for more
    console.log("The mouse is moved.");
}
로그인 후 복사

원 이벤트를 클릭하면 콘솔에 다음이 표시됩니다:

The mouse is pressed.
The mouse is clicked.
로그인 후 복사

또한 틱 이벤트를 사용하여 그래픽과 같은 애니메이션 효과를 수행할 수도 있습니다. 움직임(easeljs -shape-circle-move.js의 소스 코드 참조):

// Update stage will render next frame
createjs.Ticker.addEventListener("tick",handleTick);
//添加一个Ticker类帮助避免多次调用update方法
function handleTick() {    
var maxX =  stage.canvas.width - 50;    
var maxY =  stage.canvas.height - 50;    
//Will cause the circle to wrap back
    if(circle.x < maxX && circle.y == 50){        
    // Circle will move 10 units to the right.
        circle.x +=10;
    }else if(circle.x == maxX && circle.y <maxY){
        circle.y +=10;
    }else if(circle.x > 50 && circle.y == maxY){
        circle.x -=10;
    }else if(circle.x<= 50){
        circle.y -=10;
    }
    stage.update();
}
로그인 후 복사

효과:

3 . SpriteSheetSprite를 사용하여 동적 비트맵을 만듭니다.

마찬가지로 먼저 EaselJS를 참조하고, 그런 다음 캔버스 HTML 요소 를 만듭니다.


<canvas id="view" width="80" height="80"></canvas>
로그인 후 복사

사용할 사진:

다음 , JS 파일의 리소스를 편집합니다. 견적 로딩:


var stage = new createjs.Stage("view");
container = new createjs.Container();var data = {    
// 源图像的数组。图像可以是一个html image实例,或URI图片。前者是建议控制堆载预压
    images:["imgs/easeljs-preloadjs-animation/moveGuy.png"],    
    // 定义单个帧。有两个支持格式的帧数据:当所有的帧大小是一样的(在一个网格), 使用对象的width, height, regX, regY 统计特性。
    // width & height 所需和指定的帧的尺寸
    // regX & regY 指示帧的注册点或“原点”
    // spacing 表示帧之间的间隔
    // margin 指定图像边缘的边缘
    // count 允许您指定在spritesheet帧的总数;如果省略,这将根据源图像的尺寸和结构计算。帧将被分配的指标,根据他们的位置在源图像(左至右,顶部至底部)。
    frames:{width:80,height:80, count:16, regX: 0, regY:0, spacing:0, margin:0},    
    // 一个定义序列的帧的对象,以发挥命名动画。每个属性对应一个同名动画。
    // 每个动画必须指定播放的帧,还可以包括相关的播放速度(如2 将播放速度的两倍,0.5半)和下一个动画序列的名称。    
    animations:{
        run:[0,3]
    }
}var spriteSheet = new createjs.SpriteSheet(data)var instance = new createjs.Sprite(spriteSheet,"run")

container.addChild(instance);
stage.addChild(container);
createjs.Ticker.setFPS(5); //设置帧createjs.Ticker.addEventListener("tick",stage);
stage.update();
로그인 후 복사

이렇게 하면 단순 걷기의 효과가 나옵니다(easeljs-sprite-01.html 참조). 소스 코드):

버튼을 통해 애니메이션 변환을 제어하려면 gotoAndPlay(action) 메서드를 사용하면 됩니다. 해당 애니메이션 효과를 호출합니다.

HTML 문서 코드를 다음과 같이 수정합니다.

<canvas id="view" width="80" height="80"></canvas>

로그인 후 복사

그런 다음 JS 코드를 다음과 같이 수정합니다.

var stage = new createjs.Stage("view");
container = new createjs.Container();var data = {
    images:["imgs/easeljs-preloadjs-animation/moveGuy.png"],
    frames:{width:80,height:80, count:16, regX: 0, regY:0, spacing:0, margin:0},
    animations:{
        stand:0,
        run1:[0,3],
        run2:[4,7],
        run3:[8,11],
        run4:[12,15]
    }
}var spriteSheet = new createjs.SpriteSheet(data)var instance = new createjs.Sprite(spriteSheet,"run1")

container.addChild(instance);
stage.addChild(container);
createjs.Ticker.setFPS(5);
createjs.Ticker.addEventListener("tick",stage);
stage.update();

document.getElementById(&#39;goStraight&#39;).onclick =  function goStraight() {
    instance.gotoAndPlay("run1");
}
document.getElementById(&#39;goLeft&#39;).onclick =  function goLeft() {
    instance.gotoAndPlay("run2");
}
document.getElementById(&#39;goRight&#39;).onclick =  function goRight() {
    instance.gotoAndPlay("run3");
}
document.getElementById(&#39;goBack&#39;).onclick =  function goBack() {
    instance.gotoAndPlay("run4");
}
로그인 후 복사

效果就出来了(源码见 easeljs-sprite-02.html):

4.使用 Text 创建简单的文本

这个就比较简单了,直接看代码:


<canvas id="View" width="300" height="80"></canvas><script>
    var stage = new createjs.Stage("View");    
    var theText = new createjs.Text("Hello,EaselJS!","normal 32px microsoft yahei","#222222");
    stage.addChild(theText);
    stage.update();</script>
로그인 후 복사

这里有设置背景色为粉红:

#View { background-color: #fddfdf;}
로그인 후 복사

显示效果为:

5.使用 Container 创建保存其他显示对象的容器

其实这个在前面已经用过了。不过还是单独写个例子,这个比较简单:

<!DOCTYPE html>

<html lang="en"><head>
    <meta charset="UTF-8">
    <title>使用 Container 创建保存其他显示对象的容器</title>
    <script src="js/base/easeljs-0.8.2.min.js">
    </script>
    </head>
    <body>
    <canvas id="view" width="300" height="300">
    </canvas>
    <script>
    var stage = new createjs.Stage("view");
    container = new createjs.Container();    //先来绘制个正方形
    var square = new createjs.Shape();
    square.graphics.beginFill("#ff0000").drawRect(0,0,300,300);
    container.addChild(square);    //先来绘制个正方形
    var square2 = new createjs.Shape();
    square2.graphics.beginFill("orange").drawRect(50,50,200,200);
    container.addChild(square2);    //然后我们来绘制个圆形
    var circle = new createjs.Shape();
    circle.graphics.beginFill("blue").drawCircle(150,150,100);
    container.addChild(circle);    //最后我们再绘制个圆形
    var circle2 = new createjs.Shape();
    circle2.graphics.beginFill("white").drawCircle(150,150,50);
    container.addChild(circle2);

    stage.addChild(container);
    stage.update();</script></body></html>
로그인 후 복사

效果如下:

 

위 내용은 Html5 게임 프레임워크 createJS 컴포넌트 - EaselJS 상세 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

HTML의 테이블 테두리 HTML의 테이블 테두리 Sep 04, 2024 pm 04:49 PM

HTML의 테이블 테두리 안내. 여기에서는 HTML의 테이블 테두리 예제를 사용하여 테이블 테두리를 정의하는 여러 가지 방법을 논의합니다.

HTML의 중첩 테이블 HTML의 중첩 테이블 Sep 04, 2024 pm 04:49 PM

HTML의 Nested Table에 대한 안내입니다. 여기에서는 각 예와 함께 테이블 내에 테이블을 만드는 방법을 설명합니다.

HTML 여백-왼쪽 HTML 여백-왼쪽 Sep 04, 2024 pm 04:48 PM

HTML 여백-왼쪽 안내. 여기에서는 HTML margin-left에 대한 간략한 개요와 코드 구현과 함께 예제를 논의합니다.

HTML 테이블 레이아웃 HTML 테이블 레이아웃 Sep 04, 2024 pm 04:54 PM

HTML 테이블 레이아웃 안내. 여기에서는 HTML 테이블 레이아웃의 값에 대해 예제 및 출력 n 세부 사항과 함께 논의합니다.

HTML 정렬 목록 HTML 정렬 목록 Sep 04, 2024 pm 04:43 PM

HTML 순서 목록에 대한 안내입니다. 여기서는 HTML Ordered 목록 및 유형에 대한 소개와 각각의 예에 대해서도 설명합니다.

HTML 입력 자리 표시자 HTML 입력 자리 표시자 Sep 04, 2024 pm 04:54 PM

HTML 입력 자리 표시자 안내. 여기서는 코드 및 출력과 함께 HTML 입력 자리 표시자의 예를 논의합니다.

HTML에서 텍스트 이동 HTML에서 텍스트 이동 Sep 04, 2024 pm 04:45 PM

HTML에서 텍스트 이동 안내. 여기서는 Marquee 태그가 구문과 함께 작동하는 방식과 구현할 예제에 대해 소개합니다.

HTML 온클릭 버튼 HTML 온클릭 버튼 Sep 04, 2024 pm 04:49 PM

HTML onclick 버튼에 대한 안내입니다. 여기에서는 각각의 소개, 작업, 예제 및 다양한 이벤트의 onclick 이벤트에 대해 설명합니다.

See all articles