2011-08-05 4 views
0

Raphael 요소를 제거하면 가끔 충돌이 발생합니까?

evo_sprite = paper.circle(evo.x, evo.y, this.evo_size); 

각 원에는 표시 할 시간의 제한된 시간이 있습니다. 그 후에는 다음과 같이 표시됩니다. 나는 물건을 늦추지 않도록 파괴하기를 원한다.

내가 할 때 :

evo_sprite.hide(); 

나는 문제가 없지만 스프라이트가 여전히 거기에 있으며 따라서 여전히 메모리를 차지한다는 것을 알고있다.

그래서 시도 :

evo_sprite.remove(); 

그리고 같은 결과 (원이 더 이상 표시되지 않음)로 무엇을 얻었습니다.

유일한 문제는 (무작위로 보인다) 시간이 지나면 프로그램이 멈추고 오류 메시지가 나타납니다.

a1.paper가 정의되지 않음 [Break On This Error] Raphael = (function() {var a =/[,] + /, aO =/... eturn d;}; an.el = ax [aY];

누구에게도 의미가 있습니까? 내가 전화를 잘못 제거합니까? 원의 제거를 호출하여 Raphael의 코드 (min 파일의 7 번 줄)를 중단시키는 방법은 무엇입니까?

답변

0

코드를 보지 않고서는 알기가 어렵지만 Raphael 캔버스처럼 보이지 않습니다 (나는 그것이 a1.paper라고 생각합니다).

document.onload (또는 $ (document) .ready와 jQuery에서 Raphael 캔버스를 인스턴스화하고 있습니까? a1.paper의 범위 밖에서 작동하려고하는 함수를 만드는 코드에서 어떤 클로저도 없는지 확인하십시오.

그런 다음 기본으로 돌아가십시오. 먼저 몇 개의 원으로 시작한 다음 50, 100으로 시도해보십시오. 그런 다음 다른 브라우저에서 시도해보고 모두에서 작동하지 않는지 확인하십시오. SVG는 브라우저를 집중적으로 사용하므로 수천 개의 서클을 만들면 일부 브라우저가 작동하지 않을 수 있습니다.

+0

저는 document.onload에서 캔버스를 인스턴스화합니다. 한 번에 몇 분씩 문제가 표시되지 않기 때문에 이것이 실제로 문제라고 생각하지 않습니다. 나는 캔버스에 언제나 새로운 것을 표현할 수 있고 숨길 수있다. 캔버스는 분명히있다. – Jenny

+0

좋아요, 당신이 제안한 것과 같은 기본으로 돌아가서, 마지막 서클을 제거한 후에 만 ​​오류가 발생한다는 것을 깨달았습니다. 이상한 것이 있습니다 (화면에 유일한 객체가 아니며, 사각형도 있습니다). 더 보일 것입니다. 잠깐, 그게 다야. Drat. – Jenny

관련 문제