繁体   English   中英

Kinetic JS-在画布上加载多个图像

[英]Kinetic JS - Loading multiple images on canvas

我想在画布上加载并显示多个图像。 图像源保存在数组中:

var sources = {"../src/img/IMG_1284.JPG", "../src/img/IMG_1285.JPG", "../src/img/IMG_1286.JPG", "../src/img/IMG_1287.JPG", "../src/img/IMG_1288.JPG"}

我找到了本教程: http : //www.html5canvastutorials.com/tutorials/html5-canvas-image-loader

但是我不知道如何使这段代码适应我的source数组。 另外,我想将每个图像都设置为可拖动,但是我认为使用context.drawImage(..)不可能做到这一点。

希望我的问题是可以理解的。 谢谢你的帮助...

我看到您用KineticJS标记了您的问题。

KineticJS通过跟踪图像来简化您的任务,并允许用户拖动它们。

简单为:

  • 在尝试绘制图像之前,请使用图像加载器确保所有图像均已完全加载
  • 加载后,使用每个图像创建一个Kinetic.Image。
  • 将draggable属性放在Kinetic.Image上,它将自动变为可拖动状态

这是代码和演示: http : //jsfiddle.net/m1erickson/3es4Z/

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Prototype</title>
    <script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>
    <script src="http://d3lp1msu2r81bx.cloudfront.net/kjs/js/lib/kinetic-v4.7.2.min.js"></script>
<style>
body{padding:20px;}
#container{
  border:solid 1px #ccc;
  margin-top: 10px;
  width:350px;
  height:350px;
}
</style>        
<script>
$(function(){

    // create the Kinetic stage and layer
    var stage = new Kinetic.Stage({
        container: 'container',
        width: 350,
        height: 350
    });
    var layer = new Kinetic.Layer();
    stage.add(layer);

    // put the paths to your images in imageURLs
    var imageURLs=[];
    imageURLs.push("https://dl.dropboxusercontent.com/u/139992952/stackoverflow/house204-1.jpg");
    imageURLs.push("https://dl.dropboxusercontent.com/u/139992952/stackoverflow/house204-2.jpg");
    imageURLs.push("https://dl.dropboxusercontent.com/u/139992952/stackoverflow/house204-3.jpg");
    var imagesOK=0;
    var imgs=[];

    // fully load every image, then call the start function
    loadAllImages(start);

    function loadAllImages(callback){
        for (var i=0; i<imageURLs.length; i++) {
            var img = new Image();
            imgs.push(img);
            img.onload = function(){ 
                imagesOK++; 
                if (imagesOK>=imageURLs.length ) {
                    callback();
                }
            };
            img.onerror=function(){alert("image load failed");} 
            img.crossOrigin="anonymous";
            img.src = imageURLs[i];
        }      
    }

    function start(){
        // the imgs[] array holds fully loaded images
        // the imgs[] are in the same order as imageURLs[]

        // make each image into a draggable Kinetic.Image
        for(var i=0;i<imgs.length;i++){
            var img=new Kinetic.Image({
                x:i*75+15,
                y:i*75+15,
                width:60,
                height:60,
                image:imgs[i],
                draggable:true
            });
            layer.add(img);
        }
        layer.draw();
    }

}); // end $(function(){});
</script>       
</head>
<body>
    <button id="myButton">Button</button>
    <div id="container"></div>
</body>
</html>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM