easelJS 初始入门

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
%>
<!DOCTYPE html>
<html>
<head>
<base href="<%=basePath%>">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Title</title>
<script type="text/javascript" src="js/jquery-1.11.1.js"></script>
<script type="text/javascript" src="js/raphael.js"></script>
<script type="text/javascript" src="js/easeljs-0.7.1.min.js"></script>
<script type="text/javascript" src="js/Button5.js"></script>
<script type="text/javascript" src="js/index023.js"></script>
</head>
<body>
<div id="container1">
<canvas id="demoCanvas" width="500" height="300"></canvas>
</div>
<div>
    <canvas id="demo2" width=‘300‘ height=‘300‘></canvas>
</div>
<div>
    <canvas id="demo3" width=‘300‘ height=‘300‘></canvas>
</div>
<div>
    <canvas id="demo4" width=‘300‘ height=‘300‘></canvas>
</div>
<div>
    <canvas id="demo5" width=‘500‘ height=‘100‘></canvas>
</div>
<div>
    <canvas id="demo6" width=‘300‘ height="200"></canvas>
</div>
<div>
    <canvas id="demo7" width="300" height="200"></canvas>
</div>
<div>
    <canvas id="demo8" width="500" height="200"></canvas>
</div>
<div>
    <canvas id="demo9" width="500" height="100"></canvas>
</div>
<div>
    <canvas id="demo10" width="500" height="200"></canvas>
</div>
<div>
    <canvas id="demo11" width="500" height="200"></canvas>
</div>
<div>
    <canvas id="demo12" width="500" height="200"></canvas>
</div>
<div>
    <canvas id="demo13" width="500" height="100"></canvas>
</div>
<div>
    <select onchange="createjs.Ticker.setFPS(Number(this.value));">
        <option value="10">10 fps</option>
        <option value="20" selected>20 fps</option>
        <option value="30">30 fps</option>
        <option value="40">40 fps</option>
        <option value="50">50 fps</option>
        <option value="60">60 fps</option>
    </select><br>
    <canvas id="demo14" width="500" height="200"></canvas>
</div>
<div>
    <input type="button" value="pause" id="btn15" onclick="btn15Click()" ><br>
    <canvas id="demo15" width="500" height="200"></canvas>
</div>
</body>
</html>
$(function() {
    initCanvas();
    // 一个可以感应的圆
    init2();
    // N个旋转的可以感应的圆
    init3();
    // 一个转臂和3个圆的故事
    init4();
    // 文字
    init5();
    // 继承
    init6();
    // 鼠标点击事件基础
    init7();
    // 鼠标事件处理
    init8();
    // 事件冒泡
    init9();
    // 点击区域
    init10();
    // stage的鼠标事件
    init11();
    // 鼠标拖动
    init12();
    // 动画,初级
    init13();
    // 动画,设置不同频率
    init14();
    // 动画,带暂停
    init15();
});
function initCanvas(e) {
    // 创建stage;
    var stage = new createjs.Stage(‘demoCanvas‘);
    // 创建circle;
    var circle = new createjs.Shape();
    circle.graphics.beginFill(‘red‘).drawCircle(0, 0, 50);
    circle.x = 100;
    circle.y = 100;
    stage.addChild(circle);
    // 必须update一下才可以进行绘制;
    stage.update();
}
var stage2,circle2;
function init2(e) {
    stage2 = new createjs.Stage(‘demo2‘);
    // 估计是连缀方式的,所以可以这样写;也可以circle = new createjs.Shape();stage.addChild(circle);
    circle2 = stage2.addChild(new createjs.Shape());
    circle2.graphics.beginFill(‘red‘).drawCircle(50,50,50);
    circle2.x = 0;
    circle2.y = 0;
    // 这个事件会不停的执行
    createjs.Ticker.on(‘tick‘,tick2);
}
function tick2(event) {
    circle2.alpha = 0.2;
    // 碰撞判断hitTest
    if(circle2.hitTest(stage2.mouseX,stage2.mouseY)){
        circle2.alpha = 1;
    }
    stage2.update(event);
    //console.log(stage2);
}
var stage3,holder3;
function init3(e) {
    stage3 = new createjs.Stage(‘demo3‘);
    // container也是一种容器;
    holder3 = stage3.addChild(new createjs.Container());
    holder3.x = holder3.y = 150;
    for(var i=0;i<25;i++){
        var shape = new createjs.Shape();
        shape.graphics.beginFill(createjs.Graphics.getHSL(Math.random()*360,100,50)).drawCircle(0,0,30);
        shape.x = Math.random()*300 - 150;
        shape.y = Math.random()*300 - 150;
        holder3.addChild(shape);
    }
    createjs.Ticker.on(‘tick‘,tick3);
}
function tick3(event) {
    // 进行旋转
    holder3.rotation += 3;
    var l = holder3.getNumChildren();
    for(var i=0;i<l;i++){
        var child = holder3.getChildAt(i);
        child.alpha = 0.1;
        // globalToLocal ??
        var pt = child.globalToLocal(stage3.mouseX, stage3.mouseY);
        // stage3.mouseInBounds ??
        if(stage3.mouseInBounds && child.hitTest(pt.x,pt.y)){
            child.alpha = 1;
        }
    }
    stage3.update(event);
}
var stage4, target4, arm4;
function init4(e) {
    stage4 = new createjs.Stage(‘demo4‘);
    target4 = stage4.addChild(new createjs.Shape());
    target4.graphics.beginFill(‘red‘).drawCircle(0,0,45)
        .beginFill(‘white‘).drawCircle(0,0,30)
        .beginFill(‘red‘).drawCircle(0,0,15);
    target4.x = 100;
    target4.y = 180;
    arm4 = stage4.addChild(new createjs.Shape());
    arm4.graphics.beginFill(‘black‘).drawRect(-2,-2,100,4)
            .beginFill(‘blue‘).drawCircle(100,0,8);
    arm4.x = 180;
    arm4.y = 100;
    createjs.Ticker.on(‘tick‘,tick4);
}
function tick4(event) {
    arm4.rotation += 5;
    target4.alpha = 0.2;
    // localToLocal ??
    var pt = arm4.localToLocal(100,0,target4);
    if(target4.hitTest(pt.x,pt.y)){
        target4.alpha = 1;
    }
    // stage4.update( );// 不输入参数也是可以的;
    stage4.update(event);
}
function init5(e) {
    var stage5 = new createjs.Stage(‘demo5‘);
    var text = new createjs.Text(‘Hello World‘,‘bold 86px Arial‘,‘#ff7700‘);
    stage5.addChild(text);
    stage5.update();
    // 目前还没有进行定位;
    var text2 = new createjs.Text(‘Google Web Fonts is unavailable.‘);
    stage5.addChild(text2);
    stage5.update();
}
function init6(e) {
    var stage6, holder6;
    stage6 = new createjs.Stage(‘demo6‘);

    var btn1 = stage6.addChild(new Button(‘Hello!‘,‘#f00‘));
    btn1.x = 20;
    btn1.y = 20;

    var btn2 = stage6.addChild(new Button(‘GoodBye.‘,‘#0f0‘));
    btn2.x = 20 ;
    btn2.y = btn1.y + 50;

    var btn3 = stage6.addChild(new Button(‘Hello again!‘,‘#0ff‘));
    btn3.x = 20;
    btn3.y = btn2.y + 50;

    // tick还可以传入stage对象??
    createjs.Ticker.on(‘tick‘, stage6);
}
// 鼠标点击事件,基础;
function init7(e) {
    var stage = new createjs.Stage(‘demo7‘);

    var circle = new createjs.Shape();
    circle.graphics.beginFill(‘red‘).drawCircle(0,0,50);
    circle.x = 100;
    circle.y = 100;
    circle.on(‘click‘,function(){
        alert(‘click‘);
    });
    // 可以写的事件有: click, mousedown, mouseup, dblclick, pressmove, pressup,
    // mouseover / mouseout, and rollover / rollout.
    // 后四个事件需要stage.enableMouseOver(frequency). 处理一下;
    // on函数的全部功能:circle.on(type, listener, scope, once, data, useCapture);
    circle.on(‘mousedown‘,function(){
        console.log(‘mousedown‘);
    });

    stage.addChild(circle);
    stage.update();
}
var stage8,output8;
// 鼠标事件处理
function init8(e) {
    stage8 = new createjs.Stage(‘demo8‘);
    // 在stage上面enableMouseOver一下;
    stage8.enableMouseOver();
    output8 = new createjs.Text(‘Test press, click, doubleclick, mouseover, and mouseout‘, ‘14px Arial‘);
    output8.x = output8.y = 10;
    stage8.addChild(output8);

    var circle = new createjs.Shape();
    circle.graphics.beginFill(‘red‘).drawCircle(0,0,50);
    circle.x = circle.y = 100;
    circle.name = ‘circleName‘;
    stage8.addChild(circle);

    var square = new createjs.Shape();
    square.graphics.beginFill(‘green‘).drawRect(-50,-50,100,100);
    square.x = 250;
    square.y = 100;
    square.name = ‘squareName‘;
    stage8.addChild(square);

    circle.on(‘click‘,handleMouseEvent8);
    circle.on(‘dblclick‘,handleMouseEvent8);
    circle.on(‘mouseover‘,handleMouseEvent8);
    circle.on(‘mouseout‘,handleMouseEvent8);

    square.on(‘click‘,handleMouseEvent8);
    square.on(‘dblclick‘,handleMouseEvent8);
    square.on(‘mouseover‘,handleMouseEvent8);
    square.on(‘mouseout‘,handleMouseEvent8);

    stage8.update();
}
function handleMouseEvent8(evt) {
    output8.text = ‘evt.target:‘+evt.target+‘, evt.type:‘+evt.type;
    // 需要更新的时候再进行更新,节省cpu资源,不使用 tick:1
    stage8.update();
}
var stage9,output9,lastPhase9;
// 事件冒泡
function init9(e) {
    stage9 = new createjs.Stage(‘demo9‘);
    stage9.name = ‘stage9‘;

    output9 = new createjs.Text(‘try clicking on the background vs the label text\n\nthe background & label are both inside of a Container named button‘,‘13px courier‘);
    output9.lineWidth = 280;
    output9.lineHeight = 13;
    output9.x = 190;
    output9.y = 10;

    var background = new createjs.Shape();
    background.name = ‘background‘;
    background.graphics.beginFill(‘red‘).drawRoundRect(0,0,150,60,10);

    var label = new createjs.Text(‘click me!‘,‘bold 24px Arial‘,‘#ffffff‘);
    label.name = ‘label‘;
    label.textAlign = ‘center‘;
    label.textBaseline = ‘middle‘;
    label.x = 150/2;
    label.y = 60/2;

    var button = new createjs.Container();
    button.name = ‘button‘;
    button.x = 20;
    button.y = 20;
    button.addChild(background,label);
    // 如果设置了mouseChildren = false,只能从button触发鼠标事件了,button的孩子就不能触发鼠标事件了;
    // button.mouseChildren = false;

    stage9.addChild(button, output9);

    var targets = [stage9,button,label,background];
    for(var i=0;i<targets.length;i++){
        var target = targets[i];
        target.on(‘click‘,handleClick9,false);
        target.on(‘click‘,handleClick9,true);
    }

    stage9.update();
}
function handleClick9(evt) {
    if(evt.currentTarget == stage9 && evt.eventPhase == 1){
        output9.text = ‘target: eventPhase: currentTarget:\n‘;
    }
    output9.text += evt.target.name+‘:‘+evt.eventPhase+‘:‘+evt.currentTarget.name+‘\n‘;
    // 会输出好多的内容呢;
    console.log(output9.text);
    if(evt.currentTarget == stage9 && evt.eventPhase == 3){
        stage9.update();
    }
}
// 点击区域
function init10(e) {
    var stage = new createjs.Stage(‘demo10‘);
    stage.enableMouseOver(10);

    var label1 = new createjs.Text(‘text without hitArea‘,‘48px Arial‘,‘#f00‘);
    label1.x = label1.y = 10;
    label1.alpha = 0.5;

    var label2 = new createjs.Text(‘text with hitArea‘,‘48px Arial‘,‘#00f‘);
    label2.x = 10;
    label2.y = 80;
    label2.alpha = 0.5;

    // 创建一个点击区域,没有把这个点击区域添加到显示列表中
    var hit = new createjs.Shape();
    hit.graphics.beginFill(‘#000‘).drawRect(0,0,label2.getMeasuredWidth(),label2.getMeasuredHeight());
    label2.hitArea = hit;

    label1.on(‘mouseover‘,handleInteraction10);
    label2.on(‘mouseover‘,handleInteraction10);

    label1.on(‘mouseout‘,handleInteraction10);
    label2.on(‘mouseout‘,handleInteraction10);

    stage.addChild(label1,label2);
    stage.update();
    createjs.Ticker.addEventListener(‘tick‘,stage);
}
function handleInteraction10(event) {
    event.target.alpha = (event.type == ‘mouseover‘)?1:0.5;
}
// stage的鼠标事件
function init11(e) {
    var oldX,oldY;
    var stage = new createjs.Stage(‘demo11‘);
    // ??
    stage.enableDOMEvents(true);
    var label = new createjs.Text(‘finger paint‘,‘24px Arial‘);
    label.x = label.y = 10;

    var shape = new createjs.Shape();
    stage.addChild(shape, label);

    var color = ‘#0ff‘;
    var size = 2;

    stage.on(‘stagemousedown‘,function(event){
        size = 10;
    });

    stage.on(‘stagemouseup‘,function(event){
        color = createjs.Graphics.getHSL(Math.random()*360, 100, 50);
        size = 2;
    });
    // 把这个打开,才可能看到鼠标在stage外面的情况rawX/Y;
    stage.mouseMoveOutside = true;
    stage.on(‘stagemousemove‘,function(event){
        if(oldX){
            shape.graphics.beginStroke(color).setStrokeStyle(size,‘round‘)
                .moveTo(oldX,oldY).lineTo(event.stageX,event.stageY);
            stage.update();
        }
        oldX = event.stageX;
        oldY = event.stageY;
//        console.log("stageX/Y:"+event.stageX+";"+event.stageY); // 总是在范围内
//        console.log("rawX/Y:"+event.rawX+";"+event.rawY);// 可能<0,或者> weight/height
    });

    stage.update();
}
function init12(e) {
    var stage = new createjs.Stage(‘demo12‘);

    stage.mouseMoveOutside = true;

    var circle = new createjs.Shape();
    circle.graphics.beginFill("red").drawCircle(0, 0, 50);

    var label = new createjs.Text(‘drag me‘,‘bold 14px Arial‘,‘#fff‘);
    label.textAlign = ‘center‘;
    label.y = -7;

    var dragger = new createjs.Container();
    dragger.x = dragger.y = 100;
    dragger.addChild(circle,label);
    stage.addChild(dragger);

    dragger.on(‘pressmove‘,function(event){
        event.currentTarget.x = event.stageX;
        event.currentTarget.y = event.stageY;
        stage.update();
    });

    stage.update();
}

// 这样会不停的运行tick001函数;
createjs.Ticker.addEventListener(‘tick‘,tick001);
function tick001(e) {
//    console.log(‘tick001‘);
}
// 设置间隔时间 1000ms/40FPS = 25ms;放在前面、后面都是可以的;
//createjs.Ticker.setInterval(250);
// 后面设置setFPS(40)会覆盖前面的设置;
createjs.Ticker.setFPS(4);
var stage13, circle13;
// 动画,初级
function init13(e) {
    stage13 = new createjs.Stage(‘demo13‘);

    circle13 = new createjs.Shape();
    circle13.graphics.beginFill(‘red‘).drawCircle(0, 0, 40);
    circle13.y = 50;
    stage13.addChild(circle13);

    createjs.Ticker.on(‘tick‘,tick13);
    createjs.Ticker.setFPS(40);
}
function tick13(e) {
    circle13.x = circle13.x + 5;
    if(circle13.x > stage13.canvas.width){
        circle13.x = 0;
    }
    stage13.update(e);
}
var stage14, timeCircle14, tickCircle14;
// 动画,设置频率
function init14(e) {
    stage14 = new createjs.Stage(‘demo14‘);

    timeCircle14 = new createjs.Shape();
    timeCircle14.graphics.beginFill(‘red‘).drawCircle(0, 0, 40);
    timeCircle14.y = 50;
    stage14.addChild(timeCircle14);

    tickCircle14 = new createjs.Shape();
    tickCircle14.graphics.beginFill(‘blue‘).drawCircle(0, 0, 40);
    tickCircle14.y = 150;
    stage14.addChild(tickCircle14);

    createjs.Ticker.on(‘tick‘, tick14);
    createjs.Ticker.setFPS(20);
}
function tick14(event) {
    // event.delta - elapsedTimeInMS /1000msPerSecond * pixelsPerSecond
    timeCircle14.x = timeCircle14.x + (event.delta)/1000*100;
    // console.log(event.delta); // 这个delta跟setFPS(20)是有关系的;
    if(timeCircle14.x > stage14.canvas.width){
        timeCircle14.x = 0;
    }
    tickCircle14.x = tickCircle14.x + 5; // 5*20 = 100;
    if(tickCircle14.x > stage14.canvas.width){
        tickCircle14.x = 0;
    }
    stage14.update(event);
}
var stage15, pauseCircle15, goCircle15, output15;
// 动画,带暂停
function init15(e) {
    stage15 = new createjs.Stage(‘demo15‘);

    pauseCircle15 = new createjs.Shape();
    pauseCircle15.graphics.beginFill(‘red‘).drawCircle(0, 0, 40);
    pauseCircle15.y = 50;
    stage15.addChild(pauseCircle15);

    goCircle15 = new createjs.Shape();
    goCircle15.graphics.beginFill(‘blue‘).drawCircle(0, 0, 40);
    goCircle15.y = 150;
    stage15.addChild(goCircle15);

    createjs.Ticker.on(‘tick‘, tick15);

    output15 = stage15.addChild(new createjs.Text("","14px Arial","#000"));
    output15.lineHeight = 15;
    output15.textBaseline = "top";
    output15.x = 10;
    output15.y = stage15.canvas.height - output15.lineHeight*3-10;
}
function tick15(event) {
    goCircle15.x += 10;
    if(goCircle15.x > stage15.canvas.width){
        goCircle15.x = 0;
    }
    if(!createjs.Ticker.getPaused()){
        pauseCircle15.x += 10;
        if(pauseCircle15.x > stage15.canvas.width){
            pauseCircle15.x = 0;
        }
    }
    output15.text = "getPaused() = "+createjs.Ticker.getPaused()+"\n"+
    "getTime(true) = "+createjs.Ticker.getTime(true)+"\n"+
    "getTime(false) = "+createjs.Ticker.getTime(false);
    stage15.update(event);
}
function btn15Click(e) {
    var paused = !createjs.Ticker.getPaused();
    createjs.Ticker.setPaused(paused);
    document.getElementById(‘btn15‘).value = paused?"unpause":"pause";
}
(function () {
    var Button = function(label, color){
        this.initialize(label, color);
    };
    var p = Button.prototype = new createjs.Container();
    p.label;
    p.background;
    p.count = 0;

    p.Container_initialize = p.initialize;
    p.initialize = function(label,color){
        this.Container_initialize();
        this.label = label;
        if(!color) {
            color =‘#ccc‘;
        }

        var text = new createjs.Text(label, ‘20px Arial‘,‘#000‘);
        text.textBaseline = ‘top‘;
        text.textAlign = ‘center‘;

        var width = text.getMeasuredWidth() + 30;
        var height = text.getMeasuredHeight() + 20;

        this.background = new createjs.Shape();
        this.background.graphics.beginFill(color).drawRoundRect(0,0,width,height,10);

        text.x = width /2;
        text.y = 10;

        this.addChild(this.background, text);
        this.on(‘click‘, this.handleClick);
        this.on(‘tick‘, this.handleTick);

        this.mouseChildren = false;
    };

    p.handleClick = function(event){
        var target = event.target;
        alert(‘You clicked on a button: ‘+ target.label);
    };

    p.handleTick = function (event) {
        p.alpha = Math.cos(p.count++*0.1)*0.4+0.6;
    };

    window.Button = Button;
}());
时间: 2024-10-27 00:21:56

easelJS 初始入门的相关文章

Angular 4入门教程系列 1 运行在Docker中的HelloWorld

Angular作为目前前端的一个重要选择,加之背后站着google,得到了越来越多的开发者的青睐.但是发现没有按照由浅入深地实例化的教程,虽然官网的教程已经不错,但是初始入门的细节没有提到,再加之网络等问题,决定把官网的教程替大家做一遍给大家留个笔记.同时可能会结合docker进行使用,当然没有安装docker也完全没有关系,同样执行就可以了. 事前准备 OS [root@angular docker]# uname -a Linux angular 3.10.0-514.el7.x86_64

Linux 网络编程基础(4) -- Ping 的C代码实现

1.背景 在进行网络编程的时候,通常使用的协议有TCP协议,UDP协议.这些协议在简历套接字之初需要制定套接字的类型,比如TCP应当设置为 SOCK_STREAM, UDP对应的套接字应当设置为SOCK_DGRAM.但是这些套接字并非能够提供网络所需的全部功能,我们还需要其他的套接字,比如原始套接字OCK_RAW.原始 套接字可以提供SOCK_STREAM和SOCK_DGRAM所不及的能力.比如: (1)有了原始套接字,进程可以读取ICMPV4.ICMPV6.IGMP等的分组.正如ping所使用

[转载]Ubuntu Linux 入门(四):Ubuntu 初始设置

转载自http://terrychen.info/ubuntu-linux-beginners-guide-finetuning-ubuntu/ 在Ubuntu Linux 入门(三):熟悉 Ubuntu Linux 桌面环境一文中,我们已经基本了解 Ubuntu 的桌面环境,但是要开始使用 Ubuntu Linux 之前,我们还需要对 Ubuntu 进行一定的设置. 虽然 Ubuntu 有两种不同的桌面,但是对 Ubuntu 进行设置的方法在两种不同的桌面环境之下是完全一致的.完成以下设置只要

easelJS入门、事件、spritesheet

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + &q

Python入门-初始面向对象

之前我们代码基本上都是面向过程的,今天我们就来初始一下python中一个重要的内容:面向对象 一.面向对象和面向过程(重点理解) 1.面向过程: 一切以事物的流程为核心. 核心是"过程"二字, 过程是指解决问题的步骤.即, 先干什么, 后干什么. 基于该思想编写程序就好比在编写一套流水线,是一种机械式的编程思维. 优点: 负责的问题流程化, 编写相对简单 缺点: 可扩展性差 2.面向对象: 一切以对象为中心.  什么是对象? 不好解释,先解释解释什么是车? 有轱辘, 有方向盘, 有发动

nodejs入门之——初始nodejs

一.什么是NodeJS JS是脚本语言,脚本语言都需要一个解析器才能运行.对于写在HTML页面里的JS,浏览器充当了解析器的角色.而对于需要独立运行的JS,NodeJS就是一个解析器.简单来说nodejs就是运行在服务端的javascript. 每一种解析器都是一个运行环境,不但允许JS定义各种数据结构,进行各种计算,还允许JS使用运行环境提供的内置对象和方法做一些事情.例如运行在浏览器中的JS的用途是操作DOM,浏览器就提供了document之类的内置对象.而运行在NodeJS中的JS的用途是

【深度学习】--GAN从入门到初始

一.前述 GAN,生成对抗网络,在2016年基本火爆深度学习,所有有必要学习一下.生成对抗网络直观的应用可以帮我们生成数据,图片. 二.具体 1.生活案例 比如假设真钱 r 坏人定义为G  我们通过 G 给定一个噪音X 通过学习一组参数w 生成一个G(x),转换成一个真实的分布. 这就是生成,相当于造假钱. 警察定义为D 将G(x)和真钱r 分别输入给判别网络,能判别出真假,真钱判别为0,假钱判别为1 .这就是判别. 最后生成网络想让判别网络判别不出来什么是真实的,什么是假的.要想生成的更好,则

On The Way—Step 2 Python入门之Python内容初始

2.1 输出 print() ? 打印一个字符串 print('你真好!') ? 打印变量内容 a = '你真好!' print(a) 结果都是:你真好! 2.2 变量 变量名字规则 只能用下划线.字母.数字组成 数字不能在变量的首位出现 变量名要有真实意义 命名法:大小驼峰.下划线命名 常用 不能用Python中的关键字 变量名对字母有大小写的区分 不能用拼音和汉字做变量名 2.3常量 变量名全部大写就是常量 -- 常量建议不进行修改 2.4注释 单行注释 #后都是注释 多行注释 ""

Java程序员的Golang入门指南(上)

Java程序员的Golang入门指南 1.序言 Golang作为一门出身名门望族的编程语言新星,像豆瓣的Redis平台Codis.类Evernote的云笔记leanote等. 1.1 为什么要学习 如果有人说X语言比Y语言好,两方的支持者经常会激烈地争吵.如果你是某种语言老手,你就是那门语言的"传道者",下意识地会保护它.无论承认与否,你都已被困在一个隧道里,你看到的完全是局限的.<肖申克的救赎>对此有很好的注脚: [Red] These walls are funny.