2011-08-10 4 views
1

나는 60 초마다 다시로드 할 간단한 이미지 목록을 만들었습니다. 그러나 리로딩 프로세스가 시작될 때 플래시가 멈추거나 적어도 마우스 입력을 전혀 수용/기억하지 않는 것으로 나타났습니다.Flash/AS3에서 Loader.load() 함수를 사용할 때 정지 또는 지연이 있습니까?

구체적으로 말해서, 일시 정지 된 상태에서 버튼을 클릭하면 정상적인 기능을 수행합니다. 현재는 마우스를 아래쪽 상태로 표시하지만 예상되는 정지가 끝날 때까지 클릭을 등록하지 않습니다. 그 결과 다시 클릭해야합니다. 내가로드하고 경우

은 정말 5 개 작은 PNG 이미지 이 원인 플래시 중지 및 마우스 입력을 무시하거나 내가 미쳤다고 얘기를 찾고해야한다 생각하는 것 (루프에서 load() 5 번 호출)라고, 알 필요가 문제의 다른 곳.

플래시가 멀티 스레드는 아니지만 확실하게 load()을 호출한다고해서 100-200 밀리 초 동안 전체 애플리케이션이 종료되지는 않습니까?

모든 의견을 크게 보내 주시면 감사하겠습니다. 귀하의 코멘트에 대한 응답으로

+0

여기를 참조하십시오. 내 최근 답변보기 : http : //stackoverflow.com/questions/7017317/cpu-usage-in-as3/7017560#7017560. 필자는 Flash가 원래 C 코드와 비교하여 약 1.2 %의 효율로 실행된다는 공식 문서를 발견했습니다. 불행히도 그렇습니다. 제 친구는 이것이 성능과 관련된 문제 일 가능성이 높습니다. 그러나 코드를 최적화하는 방법이있을 수 있으므로 여기에 문제의 코드를 게시하면됩니다. :) –

+0

Ascension Systems 정보를 주셔서 감사합니다. 실제 'load()'함수에 대한 몇 가지 관련 증거를 고맙게 생각합니다. 당신의 다른 대답은 나에게 많은 훌륭한 정보를주었습니다. 다시 한번 감사드립니다. – xLite

+0

몇 가지 코드가 표시 될 수 있습니까?로드를 수행하는 데 어떤 클래스를 사용하고 있습니까? – NoobsArePeople2

답변

0

내 자신의 질문에 답하기 위해 지연이나 걸림이 없습니다. 플래시는 모든 것을 잘 처리하기 때문에 MouseEvent.CLICK을 사용할 때 조심해야한다는 것이 밝혀졌습니다. 마우스를 껐다가 다시 쥐기 전에 이미지 객체를 바꾸면 플래시가 클릭 이벤트를 전달하지 않기 때문입니다 같은 대상에 마우스 조작과 마우스 업이 발생했습니다. 나는 플래시가 내 마우스 클릭을 등록하지 않은 것 같아서 어떤 apparantly 내가 지연이 있다고 생각하게했다.

문제를 해결해 주신 모든 분들께 감사드립니다.

2

:

후 내부적으로 바이너리 데이터를 수정 내부적으로 깜박 후 Loader 객체가 실제로 SWF 또는 표시 객체의 몇 가지 유형을로드 말과하는 것 이외의 더 이상 확실한 증거를 제공 할 수 없습니다 SWF 또는 비트 맵 유형을 파싱하고이를 Loader 객체의 .content 표시 객체로 렌더링합니다. 이 전에 모든 바이너리 데이터를 가져 오는 URL 요청을 보내지 마십시오. 로더 객체의 배경에는 많은 부분이 있습니다. 바이너리 데이터의 수정에 대한 증명을 원하면 이미지를로드 한 다음 바이트를 로더에서 복사하여 어딘가에 저장하십시오. 그런 다음 원본 데이터와 비교하십시오. 출력 바이트를 이미지에 다시 저장하고 이미지 뷰어로 열려고하면 수정 된 것을 볼 수 있습니다. 실제로 작동하지 않을 것입니다. 이는 수정의 증거이기도합니다. 그것 이외에, 당신은 SWF에 대한 링크를 게시 할 수 있고 다른 사람들에게 똑같은 일이 일어 났는지 확인하기 위해 그것을 테스트 할 수 있습니다. 이것은 로더 또는 표시 객체와 관련된 모든 코드가 닫힌 소스이며 플래시 VM의 오픈 소스 부분 인 Tamarin 프로젝트에 포함되지 않았기 때문에 얻을 수있는 가장 많은 양의 증거입니다.

1

에 대해서는 동결 -에는 LoaderContext # imageDecodingPolicy에 대해 읽고 나는 그것이 확실히 동결의 원인이되는 말 기꺼이 http://www.bytearray.org/?p=2931