1. 程式人生 > >html5視覺化編輯器2

html5視覺化編輯器2

今天接著寫,昨天有了舞臺,場景,層,今天要加一個重要的東西Player!還記得flash當時有個東西叫movieClip的東西吧,或者是splite,這個東西是個容器,裝著我們的動畫,圖片,還有夢想!不說了上菜!

function player(role) {


    if (role == "img") {
        var img = new Object();
        img.role = role;
        img.image = new Image();
        img.id = '';
        img.x = 0;
        img.y = 0;
        img.w = 50;
        img.h = 50;
        img.testx=0;
        img.testy=0;
        img.inthis=false;
        img.rotate = 0;
        img.alphatx = 100;
        img.shadow = new shadow();
        img.editflag = false;
        img.focus = false;
        img.visible = true;
        img.editflag = false;
        img.edit = function () {


        }

        img.mouseup = function (e) {

        }
        img.mousedown = function (e) {


        }
         img.mousemove=function(e){



         }
        img.mouseIn=function(e){


        }
        img.mouseOut=function(e){

        }



        return img;
    }


    if (role == "rect") {
        var jx = new Object();
        jx.role = role;
        jx.id = '';
        jx.x = 0;
        jx.y = 0;
        jx.w = 0;
        jx.h = 0;
        jx.editflag = false;
        jx.visible = true;
        jx.rotate = 0;
        jx.color = "pink";
        jx.xw = 2;
        jx.mousemove=function(e){



        }
        jx.mouseup = function (e) {

        }
        jx.mousedown = function (e) {


        }

        jx.mouseIn=function(e){


        }
        jx.mouseOut=function(e){

        }
        return jx;
    }

    if (role == "rects") {
        var jxs = new Object();
        jxs.role = role;
        jxs.id = '';
        jxs.x = 0;
        jxs.y = 0;
        jxs.w = 0;
        jxs.h = 0;
        jxs.color = "pink";

        return jxs;

    }

    if (role == "line") {

        var lin = new Object();
        lin.role = role;
        lin.id = '';
        lin.x = 0;
        lin.y = 0;
        lin.x1 = 0;
        lin.y1 = 0;
        lin.color = "pink";
        lin.xw = 2;
        return lin;

    }
    if (role == "crl") {

        var crl = new Object();
        crl.role = role;
        crl.id = '';
        crl.x = 0;
        crl.y = 0;
        crl.r = 10;
        crl.sd = 0;
        crl.ed = 40;
        crl.sz = true;
        crl.xw = 2;
        crl.color = "pink";
        return crl;
    }


    if (role == "crls") {

        var crls = new Object();
        crls.role = role;
        crls.id = '';
        crls.x = 0;
        crls.y = 0;
        crls.r = 10;
        crls.sd = 0;
        crls.ed = 40;
        crls.sz = true;//時鐘旋轉順序
        crls.color = "pink";
        return crls;
    }


    if (role == "word") {

        var word = new Object();
        word.role = role;
        word.id = "";
        word.str = "hello Test word!"
        word.x = 0;
        word.y = 0;
        word.alg = "center";
        word.color = "pink";
        word.kind = "serif";
        word.size = 38;
        return word;
    }
      if(role=="pickj"){

          var pic=new Object();
          pic.role=role;
          pic.x=0;
          pic.y=0;
          pic.canId="";
          pic.targetId="";
          pic.id="";
          pic.img=new Image();
          pic.shadow=new shadow();
          pic.h=100;
          pic.w=100;
          pic.depth=1;
          pic.rotate=0;
          pic.editflag=false;
          pic.tmd=100;

          pic.mousemove=function(e){
          }
          pic.mouseup = function (e) {
          }
          pic.mousedown = function (e) {
          }

          pic.mouseIn=function(e){
          }
          pic.mouseOut=function(e){
          }


          return pic;


      }
    if(role=="weather"){
        var weath=new Object();
       weath.role=role;
       weath.x=0;
       weath.y=0;
       weath.canId="";
       weath.targetId="";
       weath.id="";
       weath.h=100;
       weath.w=100;
       weath.depth=1;
       weath.editflag=false;
       weath.mousemove=function(e){
        }
       weath.mouseup = function (e) {
        }
       weath.mousedown = function (e) {
           e.preventDefault();

        }
       weath.mouseIn=function(e){
        }
       weath.mouseOut=function(e){
        }
     return weath;

    }

}

好長!不過還沒有完,除了img外其他的還不是太完善,暫時先這樣吧,這個player就是一個圖形容器比如說舞臺上需要兩個圖片,球,餅。。。。等player都要滿足它,所以player是個超級物件 superobject,所以他的功能再多也不過分,所以以後我會將它繼續完善。

接下來我們要把這些舞臺,場景 player等等這些東西串起來,讓他們活起來發揮他們的作用!

核心的東西來了,且看下面

function DrawMain() {
    if (scaneArray.length > 0) {
        for (var i = 0; i < scaneArray.length; i++) {
            if (scaneArray[i].playflag == true && scaneArray[i].loopflag == false) {
                scaneArray[i].playtime += -1;
                //---------------------------------------播放指定時間長---------------------------------------------------------
                if (scaneArray[i].playtime <= 0) {
//---------------------------------------------跳入指定的場景根據其場景編號--------------------------------------------------------
                    if (scaneArray[i].nextframe != "" && scaneArray[i].nextframe != null) {

                        for (var p = 0; p < scaneArray.length; p++) {
                            if (scaneArray[p].order == scaneArray[i].nextframe) {

                                scaneArray[p].playflag = true;
                                scaneArray[i].playflag = false;
                                break;
                            }


                        }


                    }
                    scaneArray[i].playflag = false;


                }
                if (scaneArray[i].layer.array.length > 0) {
                    var k;

                    for (var j = 0; j < scaneArray[i].layer.array.length; j++) {
                        k = scaneArray[i].layer.array[j];
                        //----------------------------------------繪製圖片----------------------------------
                        if (k.role == "img") {

                            if (k.rotate == 0) {
                                paint.globalAlpha = k.alphatx / 100;
                                if (k.shadow.color != "" && k.shadow.color != null) {
                                    paint.shadowColor = k.shadow.color;
                                    paint.shadowBlur = k.shadow.blur;
                                    paint.shadowOffsetX = k.shadow.offsetX;
                                    paint.shadowOffsetY = k.shadow.offsetY;
                                }

                                paint.drawImage(k.image, k.x, k.y, k.w, k.h);
                                console.log(k.x);
                                if(k.editflag){

                                    DrawTools(canvas, "rect", 3, "red", new Array(k.x, k.y,  k.w-1, k.h-1));
                                }
                            } else {
                                k.image.width = k.w;
                                k.image.height = k.h;
                                rotatepic(k.image, k.x, k.y, k.rotate, k.alphatx * 0.01);
                                console.log(k.x);
                                if(k.editflag){

                                    DrawTools(canvas, "rect", 3, "red", new Array(k.x, k.y,  k.w-1, k.h-1));
                                }
                            }
                        }else if (k.role == "rect") {
                            if (k.rotate == 0) {
                                DrawRect(k.x, k.y, k.w, k.h, k.color, k.xw);

                            } else {
                                rotateRect(k.x, k.y, k.w, k.h, k.xw, k.color, k.rotate);
                            }


                        } else if(k.role=="pickj"){
                            if($s(k.canId)==null){
                                var newc=document.createElement("canvas");
                                newc.id= k.canId;
                                ///style="text-align:center;position:absolute;z-index:2;left: 200px;top: 130px;width: 180;height: 400;"
                                newc.style.position="absolute";
                                newc.style.zIndex=2;
                                newc.style.left= k.x+"px";
                                newc.style.top= k.y+"px";
                                newc.width= k.w;
                                newc.height= k.h;

                                newc.addEventListener("mousedown",function(){

                                    k.mousedown(this);

                                });

                                newc.addEventListener("mouseup",function(){

                                    k.mouseup(this);

                                });

                                newc.addEventListener("mousemove",function(){

                                    k.mousemove(this);

                                });


                                $s(k.targetId).appendChild(newc);
                            }

                            $s(k.canId).style.left= k.x+"px";
                            $s(k.canId).style.top= k.y+"px";
                            k.img.width= k.w;
                            k.img.height= k.h;
                            k.depth=scaneArray[i].layer.array.find(k)+2;
                            if(k.editflag){
                               $s(k.canId).style.backgroundColor="blue";
                                DrawTools(k.canId, "rect", 2, "red", new Array(0, 0, k.w, k.h));

                            }else{
                                $s(k.canId).style.backgroundColor="";
                            }
                            $s(k.canId).style.zIndex= k.depth;
                            DrawTools( k.canId,"clear", 1, "red", new Array(0,0, k.w, k.h));
                            DrawTools(k.canId,"pic", 1, "red", new Array(k.img, k.rotate, k.tmd));


                        } else if(k.role=="weather"){
                            if($s(k.id)==null){
                                var newc=document.createElement("iframe");
                                newc.id= k.id;
                                newc.name="weather_inc";
                                newc.src="http://i.tianqi.com/index.php?c=code&id=4";

                                newc.style.position="absolute";
                                newc.frameborder=0;
                                newc.marginwidth=0;
                                newc.marginHeight=0;
                                newc.style.zIndex=2;
                                newc.style.left= k.x+"px";
                                newc.style.top= k.y+"px";
                                newc.width= 130;
                                newc.height=120;


                                $s("stage").appendChild(newc);
                            }

                            $s(k.id).style.left= k.x+"px";
                            $s(k.id).style.top= k.y+"px";
                        }


                        else if(k.role=="wordkj"){

                        }

                        else if(k.role=="videokj"){

                        }
                        else if(k.role=="audiokj"){

                        }



                        else if(k.role=="timekj"){

                        }
                        else if(k.role=="gpkj"){

                        }
                        else if(k.role=="bdkj"){

                        }
                        else if(k.role=="jhkj"){

                        }


                        else if(k.role=="txkj"){

                        }

                    }
                }





                break;

//-----------------------------------------------------------迴圈場景播放----------------------------------------------------------------------------------
            } else if (scaneArray[i].playflag == true && scaneArray[i].loopflag == true) {

                if (scaneArray[i].layer.array.length > 0) {
                    var k;
                    for (var j = 0; j < scaneArray[i].layer.array.length; j++) {
                        k = scaneArray[i].layer.array[j];

//------------------------------------繪製圖片------------------------------------------------------------------------------------------
                        if (k.role == "img") {

                            if (k.rotate == 0) {
                                if (k.shadow.color != "" && k.shadow.color != null) {
                                    paint.shadowColor = k.shadow.color;
                                    paint.shadowBlur = k.shadow.blur;
                                    paint.shadowOffsetX = k.shadow.offsetX;
                                    paint.shadowOffsetY = k.shadow.offsetY;
                                }
                                paint.globalAlpha = k.alphatx / 100;
                                paint.drawImage(k.image, k.x, k.y, k.w, k.h);
                               // console.log(k.x);
                                if(k.editflag){

                                    DrawTools(canvas, "rect", 3, "red", new Array(k.x, k.y,  k.w-1, k.h-1));
                                }
                            } else {
                                k.image.width = k.w;
                                k.image.height = k.h;
                                if (k.shadow.color != "" && k.shadow.color != null) {
                                    paint.shadowColor = k.shadow.color;
                                    paint.shadowBlur = k.shadow.blur;
                                    paint.shadowOffsetX = k.shadow.offsetX;
                                    paint.shadowOffsetY = k.shadow.offsetY;
                                }
                                paint.globalAlpha = k.alphatx / 100;
                                rotatepic(k.image, k.x, k.y, k.rotate, k.alphatx * 0.01);
                                if(k.editflag){


                                 Draw.rect(canvas,3,"green", k.rotate,new point(k.x, k.y),new point(k.w, k.h), k.testx, k.testy);
                                }
                            }
                        } else if (k.role == "rect") {
                            if (k.rotate == 0) {
                                DrawRect(k.x, k.y, k.w, k.h, k.color, k.xw);

                            } else {
                                rotateRect(k.x, k.y, k.w, k.h, k.xw, k.color, k.rotate);
                            }

//----------------------------------------------------圖片控制元件----------------------------------------------------
                        }else if(k.role=="pickj"){

                            if($s(k.canId)==null){
                              var newc=document.createElement("canvas");
                                newc.id= k.canId;
                                ///style="text-align:center;position:absolute;z-index:2;left: 200px;top: 130px;width: 180;height: 400;"
                                newc.style.position="absolute";
                                newc.style.zIndex=1;

                                newc.style.left= k.x+"px";
                                newc.style.top= k.y+"px";
                                newc.width= k.w;
                                newc.height= k.h;
                                $s(k.targetId).appendChild(newc);
                                newc.addEventListener("mousedown",function(){

                                    k.mousedown(this);

                                });

                                newc.addEventListener("mouseup",function(){

                                    k.mouseup(this);

                                });


                                newc.addEventListener("mousemove",function(){

                                    k.mousemove(this);

                                });


                            }
                                      $s(k.canId).style.left= k.x+"px";
                                       $s(k.canId).style.top= k.y+"px";

                            k.img.width= k.w;

                            k.img.height= k.h;
                            k.depth=scaneArray[i].layer.array.find(k)+2;

                            $s(k.canId).style.zIndex= k.depth;
                            DrawTools( k.canId,"clear", 1, "red", new Array(0,0, k.w, k.h));

                            DrawTools(k.canId,"pic", 1, "red", new Array(k.img, k.rotate, k.tmd));

                            if(k.editflag){
                                //   $s(k.canId).style.backgroundColor="blue";
                                DrawTools(k.canId, "rect", 2, "red", new Array(0, 0,  $s(k.canId).width,  $s(k.canId).height));
                            }else{

                                $s(k.canId).style.backgroundColor="";
                            }
                        } else if(k.role=="wordkj"){

                        } else if(k.role=="weather"){
                            if($s(k.id)==null){
                                var newc=document.createElement("iframe");
                                newc.id= k.id;
                                newc.name="weather_inc";
                                newc.src="http://i.tianqi.com/index.php?c=code&id=4";
                                ///style="text-align:center;position:absolute;z-index:2;left: 200px;top: 130px;width: 180;height: 400;"
                                //   <iframe name="weather_inc" src="http://i.tianqi.com/index.php?c=code&id=4" width="130" height="120" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
                                newc.style.position="absolute";
                                newc.frameborder=0;
                                newc.marginwidth=0;
                                newc.marginHeight=0;
                                newc.style.border="0";
                                newc.style.zIndex=2;
                                newc.style.left= k.x+"px";
                                newc.style.top= k.y+"px";
                                newc.width= 130;
                                newc.height=120;
                                newc.scrolling="no";
                                 newc.addEventListener("mousedown",function(){

                                 k.mousedown(this);

                                 });

                                 newc.addEventListener("mouseup",function(){

                                 k.mouseup(this);

                                 });

                                 newc.addEventListener("mousemove",function(){

                                 k.mousemove(this);

                                 });


                                $s("stage").appendChild(newc);
                            }

                            $s(k.id).style.left= k.x+"px";
                            $s(k.id).style.top= k.y+"px";
                        }


                        else if(k.role=="wordkj"){

                        }

                        else if(k.role=="videokj"){

                        }
                        else if(k.role=="audiokj"){

                        }

                        else if(k.role=="weatherkj"){

                        }

                        else if(k.role=="timekj"){

                        }
                        else if(k.role=="gpkj"){

                        }
                        else if(k.role=="bdkj"){

                        }
                        else if(k.role=="jhkj"){

                        }


                        else if(k.role=="txkj"){

                        }

                    }
                }


                break;
            }


        }


    }


}

看完想吐不?反正我是吐了,為了實現功能壘成的東西,1.000版本,太臃腫了,不過透過它能知道前進方向,待會會上一個精幹的程式碼1.2。 哈哈1.1看完我又吐了,所以直接否決了!

在上之前說一下一個canvas 基本動畫的結構

1 獲取或是建立一個canvas 畫布物件    var canvas=document.getelementById("canvas");

2 canvas也只是個圖形容器(可以容納 基本圖形,視訊(把電影畫上去),還有其他canvas(畫中畫)),但他的Context封裝了繪畫操作

所以我們的獲取這些繪圖操作,var paint=canvas.getContext("2d");(暫時沒有3d,想要的話可以用webGl或者是Three.js框架(很牛的框架))

3設定一個定時渲染或者是定時更新的東西,因為你要的是一副動畫或者是一個互動遊戲,不僅僅是一副畫。我們有兩個選擇一個是setInterval 或者是 requestAnimationFrame

前者是定時執行的但是需要自己實現雙緩衝,(所謂實現雙緩衝,就是不讓畫面看著閃爍,看著比較自然)。後者是一個html5只帶的實現了雙緩衝的傢伙,效果比較好,如果你想調節幀數(更新畫面的速度)也可以自己設定。

下面給大家看一下

window.onload=function() {

        var can = document.getElementById("canvas");


        window.requestAnimFrame = (function () {
            return  window.requestAnimationFrame ||
                    window.webkitRequestAnimationFrame ||
                    window.mozRequestAnimationFrame ||
                    function (callback) {
                        window.setTimeout(callback, 1000/60);
                    };
        })();


        function draw() {
            var paint = can.getContext("2d");
            paint.clearRect(0, 0, can.width, can.height);
            game();

        }


        function render() {
            draw();
            window.requestAnimFrame(render);
        }

        render();}
下面是簡單寫法
window.onload=function() {

        var can = document.getElementById("canvas");



        function draw() {
            var paint = can.getContext("2d");
            paint.clearRect(0, 0, can.width, can.height);
           //drawing...........................

        }


        function render() {
            draw();
            requestAnimationFrame(render);
        }

        render();
}

draw()中執行的就是具體的繪圖操作。

下面上我們1.2版本的

/**
 *
 * 主繪圖程式
 * @constructor
 */
function DrawMain() {
    if (scaneArray.length > 0) {
        for (var i = 0; i < scaneArray.length; i++) {
            if (scaneArray[i].playflag) {
                scaneArray[i].playtime += -1;
                //當迴圈播放開始的時候迴圈事件會自動增加
                if (scaneArray[i].loopflag) {
                    if (scaneArray[i].playtime <= 2) {
                        scaneArray[i].playtime = 500;
                    }
                }
                //-------------播放指定時間長---------------------------------------------------------
                if (scaneArray[i].playtime <= 0) {
                    //--------------跳入指定的場景根據其場景編號--------------------------------------------------------
                    if (scaneArray[i].nextframe != "" && scaneArray[i].nextframe != null) {
                        for (var p = 0; p < scaneArray.length; p++) {
                            if (scaneArray[p].frame == scaneArray[i].nextframe) {
                                scaneArray[p].playflag = true;
                                scaneArray[p].playtime = 500;
                                scaneArray[i].playflag = false;
                                break;
                            }
                        }
                    }
                    scaneArray[i].playflag = false;
                }
                if (scaneArray[i].layer.array.length > 0) {
                    var k;
                    for (var j = 0; j < scaneArray[i].layer.array.length; j++) {
                        k = scaneArray[i].layer.array[j];
                        //----------------------------------------繪製圖片----------------------------------
                        if (k.role == "img") {
                            k.img.width = k.w;
                            k.img.height = k.h;
                            Draw.img(canvas, k.img, k.x, k.y, k.rotate);
                            if(k.edit&&Draw.path(canvas, k.x, k.y, k.w, k.h, k.rotate, 5,2,"blue", k.hitx,k.hity)==true){
                                k.editflag=true;
                            }else{
                                k.editflag=false;
                            }
                            if(k.ckg){
                            Draw.rect(canvas, 1, "red", k.rotate, new point(k.x, k.y), new point(k.w, k.h));
                            }
                        } else if (k.role == "rect") {
                                Draw.rect(canvas, 4, "pink", k.rotate, new point(k.x, k.y), new point(k.w, k.h));
                            }
                        }
                    }
                    break;
                }
            }


        }




}

今天先寫到這了。明天見!

相關推薦

html5視覺編輯2

今天接著寫,昨天有了舞臺,場景,層,今天要加一個重要的東西Player!還記得flash當時有個東西叫movieClip的東西吧,或者是splite,這個東西是個容器,裝著我們的動畫,圖片,還有夢想!不說了上菜! function player(role) {

ueditor-百度視覺編輯簡單使用方法

1、ueditor是百度視覺化編輯工具 2、ueditor官網地址 3、開發步逐     1、在官網上下載最新版本的jsp版本 圖1     2、將下載的壓縮檔案解壓,改資料夾名稱為“ueditor”;     3、建立“ueditorTest”專案,

xml視覺編輯

——業內首創的線上視覺化XML結構化資料編輯方法 Boxth Visual XML Web Editor (Boxth XWE) 是專為線上處理XML結構化資料而設計的 線上(Web)、視覺化(WYSWYG)、支援協同編輯(Cooperative Editing)的XML文

[zz]myeclipse開啟和關閉html,jsp等頁面的視覺編輯

用myeclipse開啟html,jsp等頁面時,有的是預設用視覺化編輯器開啟的,這樣開啟會顯得很慢,只要關閉視覺化編輯器就會快很多了,方法如下: 選擇選單: windows -> preferences 在彈出視窗中選擇General-> E

SpringMVC + summernote視覺編輯整合(1)

本次著重講解一下springmvc框架下的整合 summernote編輯器:如下該編輯器跟知乎平臺上編輯器類似,可以自己在JS控制檔案中進行相關控制元件的控制。本次summernote版本是:/*! Summernote v0.8.1 | (c) 2013-2015 Alan

html5視覺圖形編輯(基於canvas)

我以前特別喜歡flash,不過flash水平一般,那是的我並不是程式設計師,充其量也就是個愛好者,在這個html5的時代中,我依舊對那個有時間軸的flash編輯介面念念不忘。於是便有了這篇文章。我的目標是做一款線上的圖片,文件,動畫,遊戲生成器。目標比較大(個人比較貪),目

kindeditor官網異步加載示例無效,解決無法通過方法初始編輯

har cdd kxml yep adf tr1 ket 沒有效果 iba 官網示例:http://kindeditor.net/ke4/examples/dynamic-load.html 項目中發現一個問題,kindeditor官網是通過 初始化編輯器,但是現在有

V-rep學習筆記:視覺傳感2

存在 bsp ping repr sim isp cif ron depth   視覺傳感器的屬性設置欄中還有如下幾個選項: Ignore RGB info (faster): if selected, the RGB information of the sensor

TWaver可視編輯的前世今生(四)電力 雲計算 數據中心

變電站 fontsize 復雜 部署 ood 配置信息 來看 tar 右鍵 插播一則廣告(長期有效) TWaver需要在武漢招JavaScript工程師若幹 要求:對前端技術(JavasScript、HTML、CSS),對可視化技術(Canvas、WebGL)有濃厚的興

KindEditor 一款好用的HTML可視編輯(富文本編輯

好用 shu spl 相對 relative -a sda per 我想   KindEditor使用JavaScript編寫,可以無縫的於Java、.NET、PHP、ASP等程序接合。 KindEditor非常適合在CMS、商城、論壇、博客、Wiki、電子郵件等互聯網應用

vue 地圖視覺 mapbox篇(2)

MapBox 專案中用到MapBox也是偶然的機會,專案中需要採用3D地圖,當現有的工具(百度地圖)無法滿足我們的需求,我們肯定需要更高階開源的地圖,無奈谷歌地圖無法在國內使用,已是便找到Leafle,一開始驚豔於leafle的開源程度和其與眾不同的地圖風格,後來順藤摸瓜,找到一個商業性地圖,它便是我們的主角

【深度學習】Tensorboard 視覺好幫手2

轉自https://morvanzhou.github.io/tutorials/machine-learning/tensorflow/4-2-tensorboard2/ 目錄 要點  製作輸入源  在 layer 中為 Weights, biases 設定變化

BCGControlBar教程:視覺管理

BCGControlBar Pro for MFC最新試用版下載請猛戳>>> BCGControlBar庫框架允許您建立各種應用程式“skins”並輕鬆更改使用者介面元素的外觀。雖然該產品具有超過25個預先構建的視覺主題,但您可以輕鬆實現自定義主題。 在下圖中,您可以看到從“B

資料視覺 seaborn繪圖(2)

統計關係視覺化 最常用的關係視覺化的函式是relplot seaborn.relplot(x=None, y=None, hue=None, size=None, style=None, data=None, row=None, 

不歡迎使用CSDN-markdown編輯2

歡迎使用Markdown編輯器 你好! 這是你第一次使用 Markdown編輯器 所展示的歡迎頁。如果你想學習如何使用Markdown編輯器, 可以仔細閱讀這篇文章,瞭解一下Markdown的基本語法知識。 新的改變 我們對Markdown編輯器進行了一些功能

matplotlib資料視覺分析(2)-- numpy將陣列儲存到檔案

1 陣列以二進位制的格式儲存 np.save 和 np.load 是讀寫磁碟資料的兩個主要函式。預設情況下,陣列以未壓縮的原始二進位制格式儲存在副檔名為 npy 的檔案中,以陣列 a 為例: # coding:utf-8 import numpy as np

50程式碼HTML5 Canvas 3D 編輯優雅搞定

  1024程式設計師節剛過,手癢想實現一個html的3d編輯器,看了three.js  同時還看了網上流傳已久的<<基於 HTML5 Canvas 的簡易 2D 3D 編輯器>>,都覺得太複雜,一個3d編輯器貌似沒有幾百行程式碼搞不定。其實還真不

歡迎使用CSDN-markdown編輯2

歡迎使用Markdown編輯器 你好! 這是你第一次使用 Markdown編輯器 所展示的歡迎頁。如果你想學習如何使用Markdown編輯器, 可以仔細閱讀這篇文章,瞭解一下Markdown的基本語法知識。 新的改變 我們對Markdown編輯器進行了一些功能

50程式碼HTML5 Canvas 3D 編輯優雅搞定,不信你試試

轉載 1024程式設計師節剛過,手癢想實現一個html的3d編輯器,看了three.js 同時還看了網上流傳已久的<<基於 HTML5 Canvas 的簡易 2D 3D 編輯器>>,都覺得太複雜,一個3d編輯器貌似沒有幾百行程式碼搞不定。

視覺學習筆記2視覺編碼

用視覺元素表示資料 在視覺化資料時,你會使用視覺元素(例如點、線、長條)表示數值。例如,如果檢視多個人的身高和體重,可以用一個點表示每個人的身高和體重值。