나는 약 1 개월 동안 캔버스와 키네틱스에 새롭다. 내 영어는 가난하다.캔버스, KineticJs, 정사각형이 튀어 나와서 탭을 벗어날 때 가장자리를 벗어나서 튀어 오릅니다.
내 문제 : 정사각형이 캔버스 가장자리 바깥으로 튀어 오릅니다.
탭을 변경하거나 탐색기를 최소화 할 때 사각형이 가장자리를 벗어납니다. 화상 예 : http://clip2net.com/s/2aLYf I 5 초와 같은 탭 변경
후 사각형 모서리를 무시하고 제가 에 애니메이션을 리턴하는 경우, 사각형의 한계 안에서 복귀하기 시작한다. 가장자리가 무시되므로 애니메이션을 보지 못하거나 애니메이션 탭이 활성화되지 않습니다.
메신저가 다시 탭을 볼 때 사각형이 돌아옵니다.
내 코드는 사각형 메뉴의 아래이고,이 사이트 메신저 작업입니다 아래
function init_squares(){
var stage = new Kinetic.Stage({
container: "square_animation",
width: 150,
height: 150
});
var stage_width = 150;
var stage_height = 150;
var layer = new Kinetic.Layer();
var num_squares = 12;
var squares = [];
//creates the squares
for(var i=0; i < num_squares; i++){
var this_width = get_width();
squares[i] = new Kinetic.Rect({
x: stage_width/2 ,
y: stage_height/2,
width: this_width,
height: this_width,
fill: get_color(),
vy: get_random_speed(), //custom values for the use of velocity
vx: get_random_speed(), //custom values for the use of velocity
alpha: .7
});
}
initialize_squares(); //initialize the squares
function initialize_squares(){
var n = squares.length;
for(var i=0; i < n; i++){
layer.add(squares[i]);
}
stage.add(layer);
}
//animation frame
stage.onFrame(function(frame) {
var n = squares.length;
for(var i=0; i < n; i++){
var attr = squares[i].getAttrs();
var new_x = squares[i].getX() + (attr.vx * frame.timeDiff/1000);
var new_y = squares[i].getY() + (attr.vy * frame.timeDiff/1000);
var x = squares[i].getX();
var y = squares[i].getY();
//check right border
if((x + attr.width) > stage_width){
if(attr.vx > 0)
attr.vx *= -1;
}
//check left border
if(x <= 0){
if(attr.vx < 0)
attr.vx *= -1;
}
//check top border
if(y <= 0){
if(attr.vy < 0)
attr.vy *= -1;
}
//check bottom border
if((y + attr.width) > stage_height){
if(attr.vy > 0)
attr.vy *= -1;
}
squares[i].setY(new_y);
squares[i].setX(new_x);
squares[i].setAttrs({vx: attr.vx, vy: attr.vy});
}
layer.draw();
});
stage.start();
function get_random_speed(){
if((Math.floor(Math.random() * 2) + 1) % 2 == 0)
return (Math.floor(Math.random() * 30) + 40) * -1;
else
return Math.floor(Math.random() * 30) + 40;
}
function get_color(){
var colors = ['#c8c8c8','#b7b7b7','#ababab','#999999','#d2d2d2','#818181','#8f8f8f'];
var n = colors.length;
return colors[Math.floor(Math.random() * n)];
}
function get_width(){
var widths = [20,22,24,28,26];
var n = widths.length;
return widths[Math.floor(Math.random() * n)];
}
}
입니다. http://uniformestoro.com/
내가 문제가 위치를 계산하고 각 프레임에 충돌 확인 생각, 코드 얼핏 후 HELP