Usta Gönderi paylaştı
4 yıl önce

canvas

Ante Stipani?ev tarafından Easeljs  kullanılarak hazırlanmış bir  canvas resim büyütme  örneği. Bu zaman kadar  sadece bir  defa rastladığım ve  normal bir jQuery  eklentisi  sandığım Easeljs de  jQuery  gibi  kullanılabilen bir javascript  kütüphanesidir. Eseljs ile  hazırlanan örnekler  gerçektende  çok güzel görünüyorlar. Şimdilik webmaster kategorisine yeni bir kategori  ekleyerek ileriki  zamanlarda  sizler  için Easeljs  hakkında da örnekler paylaşmaya gayret göstericem.

Demo örneğinde mouse  ile  resmin bulunduğu çerçeveye  girdiğiniz  an ufak bir pencerede  resmin tamamı  görünüyor  ve canvas çerçevesi içinde  bulunan resim mercek  ile izleniyormuş gibi  bir  efekt  veriyor. Resmin olduğu çerçeveye  tıkladığınızda resim sabitleniyor  ve mouse  ile  resim çerçevesi  içinde  gezdiğinizde dahi resim sabit olarak kalıyor. Tekrar hareket ettirmek için mouse  ile resmin üstüne tıklamanız  gerekiyor.

 

Kullanım

  •  Head  etiketleri arasına eklenmesi gereken  bölümler.

Easeljs  dosya adresi : 

<script type="text/javascript" src="https://code.createjs.com/easeljs-0.6.0.min.js"></script>
<script type="text/javascript" src="canvas.js"></script>

JavaScript : 

var stage;

function init() {  
	var canvas = document.getElementById("canvas");
    if (!canvas || !canvas.getContext) return;

	stage = new createjs.Stage(canvas);  
    stage.enableMouseOver(5);
    stage.mouseMoveOutside = false; 
    createjs.Touch.enable(stage);

    var W = canvas.width, H = canvas.height, margin = 20, locked = false;
    var minimapWidth, minimapHeight, minimap, minimapFrame, minScale, currentScale, msg, bmpWidth, bmpHeight, bmp_maxx, bmp_maxy, frame_maxx, frame_maxy;

    // bitmap
    var bmp = new createjs.Bitmap(); 
    stage.addChild(bmp);      

    msg = new createjs.Text("Loading...", '10px Arial', '#FFFFFF');
	msg.x = 4;
    msg.y = H - 16;    
	stage.addChild(msg);
    stage.update();

    var img = new Image();       
        img.onload = imgLoaded;       
        img.src = 'https://jsrun.it/assets/b/I/A/K/bIAKE.jpg';

    function imgLoaded(event) {        
        bmp.image = event.target;        
        start();
    }

    function start() {   
        bmpWidth = bmp.image.width;
        bmpHeight = bmp.image.height;       

        bmp_maxx = bmpWidth - W;
        bmp_maxy = bmpHeight - H;

        // minmap
        minimapWidth = 160;
        minimapHeight = minimapWidth * bmpHeight/bmpWidth;

        minimap = new createjs.Container();
        minimap.x = minimap.y = 4;
        minimap.visible = false;
        stage.addChild(minimap);

        // thumb        
        var minimapBmp = bmp.clone();        
        var minimapScale = minimapWidth/bmpWidth;
        minimapBmp.setTransform(0, 0, minimapScale, minimapScale);
        minimap.addChild(minimapBmp);

        // frame
        var minimapFrameGraphics = new createjs.Graphics().setStrokeStyle(1, "round").beginStroke("#ffffff").drawRect(0, 0, minimapWidth, minimapHeight);
        minimap.addChild(new createjs.Shape(minimapFrameGraphics));

        var frame_width = minimapWidth * W / bmpWidth;
        var frame_height = minimapHeight * H / bmpHeight;
        frame_maxx = minimapWidth - frame_width;
        frame_maxy = minimapHeight - frame_height;
        var minimapFrameGraphics2 = new createjs.Graphics().setStrokeStyle(1, "round").beginStroke("#00ff00").drawRect(0, 0, frame_width, frame_height);
        minimapFrame = new createjs.Shape(minimapFrameGraphics2);
        minimap.addChild(minimapFrame);    

        // message
        msg.visible = false;
	    stage.addChild(msg);	
        updateMessage();

        // calculate min image scale
        minScale = Math.max(W / bmpWidth, H / bmpHeight);
        setImageScale(minScale);

        // mouse events
        if(bmpWidth >= W &&  bmpHeight >= H) {
            canvas.addEventListener("mouseover", mouseOver, false);
            canvas.addEventListener("mouseout", mouseOut, false);
            canvas.addEventListener("mousedown", toggleLock, false);

            stage.onMouseMove = mouseMoved;

            minimap.addEventListener("mouseover", minimapOver); 
            minimap.addEventListener("mouseout", minimapOut); 
        }

        stage.update();
    }

    function setImageScale(perc) { 
        currentScale = perc;
        bmp.scaleX = bmp.scaleY = currentScale;
        bmp.x = (W - bmp.image.width * currentScale) * 0.5;
        bmp.y = (H - bmp.image.height * currentScale) * 0.5;
    }

    function showMinimap(e) {      
        minimap.visible = e;
    }        

    function mouseOver(event) {        
        msg.visible = true;
        showMinimap(true);
        stage.update();        
    }  

    function mouseOut(event) {
        msg.visible = false;        
        resetCanvas();        
    }

    function resetCanvas() {
         if(locked===true) {            
            stage.update(); 
            return;
        }

        showMinimap(false);
        setImageScale(minScale);
        stage.update();   
    }

    function toggleLock(event) {
        locked = !locked;

        showMinimap(true);    // for touch
        updateMessage();
        stage.update();
    }

    function mouseMoved(event) { 
        if(locked===true) return;

        if(minimap.visible === false) showMinimap(true);    // for touch
        update((event.stageX-margin)/(W-2*margin), (event.stageY-margin)/(H-2*margin));
        stage.update();
    }

    function minimapOver(event) {
        minimap.alpha = 0.3;
        stage.update();
    }

    function minimapOut(event) {
        minimap.alpha = 1;  
        stage.update();
    }   

    function update(xperc, yperc) {
        if(xperc<0) xperc = 0;
        else if(xperc>1) xperc = 1;
        if(yperc<0) yperc = 0;
        else if(yperc>1) yperc = 1;
        bmp.setTransform(-xperc * bmp_maxx, -yperc * bmp_maxy);
        minimapFrame.setTransform(xperc * frame_maxx, yperc * frame_maxy);
    }

    function updateMessage() {
        if(locked===true) {
            msg.text = 'LOCKED. Click to unlock';
        } else {
            msg.text = 'Click to lock';
        }
    }    
}

// Init
window.addEventListener('load', init, false);
  •  Body etiketleri arasına eklemeniz gereken bölüm.

Html : 

<canvas id='canvas' width="700" height="600"></canvas>

 

 

 

 

senin düşüncelerini merak ediyor. Yorum yap
Mintik'e katıl

"Giriş yaparak Mintik'in Hizmet Şartlarını kabul ettiğinizi ve Gizlilik Politikasının geçerli olduğunu onayladığınızı kabul etmiş olursunuz."

Bu konular da ilgini çekebilir
Shaqir Usta Soru sordu 5 yıl önce
ImageView.js – Çerçeve içinde resmi büyütme
Hillervo Bilgin Soru sordu 4 yıl önce
MeanMenu.js
artac Bilgin Soru sordu 5 yıl önce
User Submitted Posts WordPress eklentisi
bukan Çırak Soru sordu 5 yıl önce
jDigiClock
jazlyn Çırak Soru sordu 5 yıl önce
Canyon
sabattin Öğrenci Soru sordu 4 yıl önce
Curtain.js – Kaydırma Çubuğu ile Hareket Eden Çerçeveler
cesim Bilgin Soru sordu 4 yıl önce
PerfectScroll.js – İnce kaydırma çubukları
Saara-Lotta Acemi Soru sordu 5 yıl önce
Realistic 3D horizontal
Rubin Aydın Soru sordu 5 yıl önce
.po ve .mo uzantılı dosyaları düzenleme