나는 게임을위한 간단한 웹 애니메이션으로 뛰어 들고 있으며, 조언을 구하고있다. 궁극적으로 베 지어와 호를 잘 이해하고 경로를 따라 움직여 멋진 디아블로 III 스타일의 커브 번호를 얻는 방법을 배우게됩니다. 그러나 지금은 기본 원리를 없애기 위해 노력하고 있습니다. RaphaelJS/CSS - 텍스트/숫자 애니메이션하기
키 코드
는 CSS 스타일이 (도움을 여기를 사용자에게 감사)을 강조 표시되는 텍스트를 방지paper.text(170, 95, dmgValue).attr({fill:"white", "font-size":16}).animate({
transform:"t0,-50", "fill-opacity":0} ,500).node.setAttribute("class", "no-select");
꽤 SIMPLE-입니다. 주요 문제는 텍스트가 여전히 불투명하지 않다는 것입니다. 텍스트 위에 커서를 올려 놓고 텍스트 커서를 볼 수 있습니다. 작동하지만,보기가 지저분합니다. 또한 할당 된 변수가 없으므로 Element.remove()로 처리 할 수 있다고 생각하지 않습니다.
내가 지금하는 부피에 코드를 만들어 저장 버전 사이에 만든 작은 수정이 많이 있었다. 한 번에 (더 느린 컴퓨터의 경우) 주위를 날고있는 숫자의 수를 제한하는 기능을 원했기 때문에, 필요하지도 않고 커다란 크기가 아니더라도 배열을 끝없이 반복하여 사용할 수있는 배열에 넣었습니다. 그것을 버리십시오.
변형을 사용하여 y- 좌표를 설정하고 .hide()를 콜백 (애니메이션 끝 부분에 배치하는 대신 작동하는 콜백) 용 별도 함수에 배치하는 방법으로 이동했습니다.
이 버전은 처음에는 작동하는 것으로 보이지만 너무 여러 번 클릭하면 애니메이션이 중단되어 그 이유가 확실하지 않습니다. 나는 충분한 시간을두고 결국 그것을 알아낼 수 있다고 확신하지만, 어쨌든 이것을 너무 복잡하게 만들 수도 있습니다. 전체 코드 -
var paper = Raphael(0, 0, 350, 350);
paper.canvas.style.backgroundColor = "Black";
var dmgValues = [],
dmgValuesIndex = 0,
maxMsgs = 15,
dmgXMaxOffset = 25,
dmgYMaxOffset = 25,
dmgXRef = 170 - dmgXMaxOffset,
dmgYRef = 250 - dmgYMaxOffset,
dmgMaxDistance = 50;
for (i=0; i< maxMsgs; i++) {
dmgValues[i] = paper.text().attr({fill:"white", "font-size":16});
dmgValues[i].node.setAttribute("class", "no-select");
dmgValues[i].hide();
}
var toggle = paper.rect(150, 270, 50, 25).attr({fill:"green"});
toggle.click(function() { doHit(); });
function doHit() {
var dmgHit = Math.floor(Math.random() * 99) + 1,
xPos = Math.floor(Math.random() * dmgXMaxOffset) + 1,
yPos = Math.floor(Math.random() * dmgYMaxOffset) + 1;
dmgValues[dmgValuesIndex].show();
if (dmgValues[dmgValuesIndex].status() == 1) { dmgValues[dmgValuesIndex].stop(); }
dmgValues[dmgValuesIndex].attr({x:dmgXRef + xPos, y:dmgYRef + yPos, text:dmgHit,
"fill-opacity":1}).animate({y:dmgYRef - dmgMaxDistance, "fill-opacity":0}, 600,
"linear", function() { afterEffects(dmgValues[dmgValuesIndex]) });
}
function afterEffects (afterTarget) {
afterTarget.hide();
dmgValuesIndex++;
if (dmgValuesIndex >= maxMsgs) { dmgValuesIndex = 0; }
}
CSS :
.no-select {
-moz-user-select: none;
-webkit-user-select: none;
}
을 코드 -. 커서를 가져 가거나 텍스트 커서가 보이지 않습니까? – Ian
안녕하세요 :) 다시 채우기 불투명도 애니메이션을 제거하여 첫 번째 비트를 약간 변경했습니다. http://jsfiddle.net/rLcwax9k/8/ 참조 부호가 없어도 참조 할 수 있습니까? 변수 이름? – Dinklebeeeerg
무슨 뜻인가요? 함수의 일부로 작성한 오브젝트를 리턴하여 값에 지정할 수 있습니다. 문제가 아직도 무엇인지 확실하지 않습니다. 나는 경험있는 문제와 그것을 복제하는 방법에 대해보다 간결한 예제 (후자의 jsfiddle에서와 같이)로 새로운 질문을 작성하고 싶다. – Ian