KineticJS icon indicating copy to clipboard operation
KineticJS copied to clipboard

zoom kineticjs-content, drag position not correct

Open tranquangchau opened this issue 9 years ago • 0 comments

<style>
.kineticjs-content{border: 1px solid;}
</style>
  
  <div id="container" style="float: left;"></div>
  <br> <button onclick="add_text()">add text</button>
  <br> <button onclick="zoom()">zoom</button>
  <br> <button onclick="nonzoom()">no -zoom</button>

<script src="https://code.jquery.com/jquery-1.9.1.js"></script>
<script src="/kinetic-v5.1.0.js"></script>

<script>
var gl_width=478;
  var gl_height=726;
var iszoom=false;
var zoom_xmax=0.62*478;
var zoom_ymax=0.62*726;
  
var stage = new Kinetic.Stage({
        container: 'container',
        width:gl_width,
        height:gl_height
  });

var layer = new Kinetic.Layer();

stage.add(layer);
var getCurrentRandomText='id12314';
function add_text(){
		minTextX = 0;
        maxTextX = 100;
        minTextY = 0;
        maxTextY = 200;
		
        var textGroup = new Kinetic.Group({
            x:100,
            y:200,			
            draggable: true,
            dragBoundFunc: function (pos) {
				console.log(pos);
                var X = pos.x;
                var Y = pos.y;
                /*
				if (X < minTextX) {
                    X = minTextX;
                }
                if (X > maxTextX) {
                    X = maxTextX;
                }
                if (Y < minTextY) {
                    Y = minTextY;
                }
                if (Y > maxTextY) {
                    Y = maxTextY;
                }
				*/
				console.log("set:x= "+X+" set:y="+Y);
                return ({
                    x: X,
                    y: Y
                });
				
            }
        });
        var newText = new Kinetic.Text({
            text:   'chauchau',
            fontSize: 16,
            fill: '#666666',
            fontFamily: 'Arial',
            name:   'customText_' + getCurrentRandomText,
            id:     'customText_' + getCurrentRandomText
        });
        
        var textRect = new Kinetic.Rect({
            width: newText.getWidth(),
            height: newText.getHeight(),
            name:   'customRec_' + getCurrentRandomText,
            id:     'customRec_' + getCurrentRandomText
        });
        textGroup.add(textRect).add(newText);
  
        layer.add(textGroup);
        layer.draw();
		
		
        
        textGroup.on('mouseover', function() 
        {
            document.body.style.cursor = 'pointer';
        });
        textGroup.on('mouseout', function() 
        {
            document.body.style.cursor = 'default';
        });
        textGroup.on('dragstart', function()
        {                			
			if(iszoom){
				maxTextX = zoom_xmax;				
				maxTextY = zoom_ymax;
			}else{
				maxTextX = gl_width;				
				maxTextY = gl_height;
			}
        			
			var getTextobj='';
			var getRectObj='';  
			getTextobj =layer.get('.customText_' + getCurrentRandomText);
			getRectObj =layer.get('.customRec_' + getCurrentRandomText);
			
			getTextobj[0].setStroke(1);
			layer.draw();
        });
		textGroup.on('dragend', function() 
        {
			var getTextobj='';
			var getRectObj='';  
			getTextobj =layer.get('.customText_' + getCurrentRandomText);
			getRectObj =layer.get('.customRec_' + getCurrentRandomText);
			
			getTextobj[0].setStroke(0);
			layer.draw();
        });
}
function zoom(){
	iszoom=true;
	$('.kineticjs-content').css("zoom","0.62");
}function nonzoom(){
	iszoom=false;
	$('.kineticjs-content').css("zoom","1");
}
</script>

Step: add_text (button) drap text ok Step zoom (button) drap text error position https://jsfiddle.net/k4bd5y5s/

Please help me fix it.Thank

tranquangchau avatar Dec 23 '16 04:12 tranquangchau