2011-12-30 1 views
0

AS3의 Flash CS4에서 Adobe AIR로 게임을 만들고 있습니다. 게임이 너무 커서 복잡해지기 때문에 여기에서 모든 것을 공유 할 수는 있지만 문제를 설명하려고 노력할 것입니다.AS3 (Adobe AIR/Flash) gotoAndPlay는 한 번만 호출되었지만 막대한 지연을 유발합니까?

내 게임의 배경은 애니메이션 물이며 게임의 캐릭터와 게임의 다른 엔티티의 상징입니다. 캐릭터가 특정 작업을 수행하면 물 애니메이션이 특정 프레임으로 이동해야합니다. 이건 정말 용이해야한다 : 그러나

water_background.gotoAndPlay(the_frame); 

, 어떤 이유로이 지연의 많은 원인이되는 관계없이 나는 그것을 사용하는 기계. gotoAndPlay가 실행될 때마다 700 밀리 초의 지연이 발생하여 모든 것이 멈추고 모든 애니메이션이 완료되고 적절한 프레임에서 물이 재생되지만 사용자는 모든 애니메이션을 놓치지 만 예쁜 애니메이션은 그 동안 게임이 멈춰 있기 때문에 발생합니다.

나는 이것을 몇 시간 동안 알아 내려고 노력해 왔습니다. 나는 내가 생각할 수있는 모든 것을 봤고 대답을 찾지 못했다.

내 기호가 많은 프레임을 가지고 있기 때문에 약간 걱정 되네 ... 850 프레임입니다.

누구든지 나에게이 점을 밝힐 수 있습니까?

다음은 관련 코드입니다. 이것은 사용자가 키보드 액션에 대한 응답으로 실행됩니다 :

//the nearest frame to jump to in FRONT of the current frame, when something is succesfully eaten. 
var nearest_clear_frame:int = 1; 
var curr_frame = water_background.currentFrame; 
var i; 
var skipped_frames:int = 0; 
for(i = 0; i < clear_frames.length -1; i++) { 


     var new_delta = (clear_frames[i]-curr_frame); 
     var old_delta = (nearest_clear_frame-curr_frame); 

     if((new_delta<old_delta || old_delta<0)&& new_delta >= 1){ 

      nearest_clear_frame = clear_frames[i]; 
      skipped_frames = nearest_clear_frame -curr_frame; 

     } 

} 

water_background.gotoAndPlay(nearest_clear_frame);    

water_background 물 배경 t 모자의 동영상 클립입니다 30 초 만들며 움직이는 비디오에 관한 것입니다.

public var clear_frames:Array = [1, 109, 272, 413, 529, 690, 830]; 

clear_frames 별도의 클래스에 정의되어 있지만, 주요 코드에 있는지 클래스는 별도의 클래스의 확장, 그래서 나는 전체 액세스 할 수 있어야합니다 생각 :

clear_frames

은과 같이 정의된다 그것까지

어떤 도움이라도 대단히 감사합니다.

편집


gotoAndPlay(1) 기능을 완벽하게 부드러운, 그러나 다른 프레임의 일부는 내가 배열을 사용하는 대신 수동으로 직접 입력해도하지 않습니다.

turtle_game.swf Movie Report 
----------------------------- 

Metadata 
-------- 
Bytes Value 
----- ----- 
1290 <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/"> <xmp:CreatorTool>Adobe Flash CS4 Professional</xmp:CreatorTool> <xmp:CreateDate>2011-11-14T14:28:55-08:00</xmp:CreateDate> <xmp:MetadataDate>2011-12-31T12:34:19-08:00</xmp:MetadataDate> <xmp:ModifyDate>2011-12-31T12:34:19-08:00</xmp:ModifyDate> </rdf:Description> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"> <xmpMM:InstanceID>xmp.iid:DCA89ABBEE33E1119D5DF3032563A207</xmpMM:InstanceID> <xmpMM:DocumentID>xmp.did:DCA89ABBEE33E1119D5DF3032563A207</xmpMM:DocumentID> <xmpMM:OriginalDocumentID>xmp.did:2F1CC129100FE111B280DE374C2F22D4</xmpMM:OriginalDocumentID> <xmpMM:DerivedFrom rdf:parseType="Resource"> <stRef:instanceID>xmp.iid:B51A6ED0190FE111B280DE374C2F22D4</stRef:instanceID> <stRef:documentID>xmp.did:B51A6ED0190FE111B280DE374C2F22D4</stRef:documentID> <stRef:originalDocumentID>xmp.did:2F1CC129100FE111B280DE374C2F22D4</stRef:originalDocumentID> </xmpMM:DerivedFrom> </rdf:Description> <rdf:Description rdf:about="" xmlns:dc="http://purl.org/dc/elements/1.1/"> <dc:format>application/x-shockwave-flash</dc:format> </rdf:Description> </rdf:RDF> 

Frame # Frame Bytes Total Bytes Scene 
------- ----------- ----------- ---------------- 
     1  7792727  7792727 Scene 1 (AS 3.0 Classes Export Frame) 
     2    2  7792729  
     3    2  7792731  
     4    2  7792733  
     5    2  7792735  
     6    2  7792737  

     ... i checked all of these and they are roughly identical ... 

    837    2  7794399  
    838    2  7794401  
    839    2  7794403  
    840    2  7794405  

Scene      Shape Bytes Text Bytes ActionScript Bytes 
------------------------- ----------- ---------- ------------------ 
Scene 1        0    0     49218 

Symbol      Shape Bytes Text Bytes ActionScript Bytes 
------------------------- ----------- ---------- ------------------ 
water_background2      0    0      0 
water_background      0    0      0 
background        0    0      0 
gauge         0    0      0 
stage_mask        0    0      0 
lose_screen       0   68      0 
win_screen        0   66      0 
gauge_mask       38    0      0 
gauge         0    0      0 
gauge_shell       0    0      0 
main_turtle2       0    0      0 
Floating Turtle Frames 2    0    0      0 
Floating Turtle Frames     0    0      0 
Floating Turtle Tweens     0    0      0 
Floating Turtle Frames3    0    0      0 
item         0    0      0 
blf         0    0      0 
brf         0    0      0 
tlf         0    0      0 
trf         0    0      0 
body         0    0      0 
Tween 1        0    0      0 
Tween 2        0    0      0 
main_turtle       0    0      0 

Font Name     Bytes  Characters  
---------------------- --------- -------------- 
TimesNewRomanPSMT    1633  !LWYnostu 

ActionScript Bytes Location 
------------------ -------- 
      49218 Scene 1:Frame 1 

Bitmap      Compressed Compression 
----------------------- ---------- -------- ----------- 
jelly.png      4546  133056 JPEG Quality=80 
bag.png       6289  176148 JPEG Quality=80 
6pack.png      4730  57936 JPEG Quality=80 
turtle.png      40215  2743296 JPEG Quality=80 
back left flipper    3524  56144 JPEG Quality=80 
back right flipper    4664  63448 JPEG Quality=80 
top left flipper    6228  123300 JPEG Quality=80 
top right flipper    4407  69552 JPEG Quality=80 
body       18132  242740 JPEG Quality=80 
Gauge-shell.png    10399  236160 JPEG Quality=80 
portal.png     215640  8294400 JPEG Quality=80 
Outside Template    140809  7542720 JPEG Quality=80 
Finish       3510  39432 JPEG Quality=80 
Start       3303  39008 JPEG Quality=80 
Shark A       6454  115320 JPEG Quality=80 
Shark B       6360  96672 JPEG Quality=80 
Shark C       6275  96672 JPEG Quality=80 
Red Boat      10781  226872 JPEG Quality=80 
Green Boat      11601  241664 JPEG Quality=80 
Yellow Boat     12305  245504 JPEG Quality=80 
Green Leatherback    3755  38352 JPEG Quality=80 
Globe       248169  5607360 JPEG Quality=80 
Shadow      507039  8294400 JPEG Quality=80 
Dimpled Aluminum    489466  8294400 JPEG Quality=80 
progress_meter.jpg    17398  558112 Imported JPEG=102 

Video      Compressed 
------------------------ ---------- 
background.flv     5933617 
+0

물의 850 프레임? 임베디드 비디오 또는 850 이미지입니까? 어떤 크기 (치수)입니까? 'cacheAsBitmap'을 설정하는 것과 같은 일을하고 있습니까? 700ms의 일시 정지가 GC가 시작되는 것과 같은 메모리 문제 인 것 같습니다. 현재 메모리 사용량을 보여 주면서 앱을 프로파일 링 할 수 있습니까? 나는 당신이 당신의 물을 재생하려고 할 때, 당신의 앱을 멈추게 만드는 GC에 대한 기억이 필요하다는 것을 짐작할 수있다. – divillysausages

+0

애니메이션은 이미 전체 시간 동안 실행 중입니다. 물이 특정 상태에있는 가장 가까운 지점으로 건너 뛰려고합니다. 후유증에서 만들어진 수입 된 .FLV이며 상징으로 변환됩니다. – BumbleShrimp

+0

크기 보고서를 OP – BumbleShrimp

답변

0

그것은 당신의 코드에서 아무것도처럼 보이지 않는 문제입니다 : 여기

는 일에 대한 크기 보고서입니다. 꽤 많은 이미지가 일부 프레임에로드되는 것처럼 들리거나 특정 프레임에 개체를 만드는 일부 동작 스크립트가있는 것 같습니다. FLA를 공유하기는 어렵지만 보여줄 수있는 온라인 예제가 있습니까?

"게시 설정"에서 아직 설정하지 않은 경우 "크기 보고서 생성"확인란을 선택하십시오. 이 옵션을 사용하면 FLA와 같은 디렉토리에 (또는 SWF로, 아마도?) 텍스트 파일을 생성 할 수 있습니다. 이 보고서에는 풍부한 데이터가 있으며 프레임, 개체, 시간 등을 구분합니다.

또한 for 루프에 변수를 선언하지 마십시오. 또한 모든 변수를 유형으로 지정하십시오. 이것은 단지 좋은 습관 일뿐입니다.


편집 : 좋아, 보고서에서 찾고, 당신은 다른 사람의 프레임 1 부하 (7,792,727 바이트), 아무것도 있습니다. 이것은 대부분 background.flv 비디오와 다른 PNG 이미지들과 비슷합니다. PNG의 크기를 줄이려고 할 수는 있지만 큰 원인은 FLV 비디오라고 생각합니다. 아마 FLV 내에서 SWF를 검색하려고합니다. 이 과정은 신속해야하지만 테스트를 위해 FLV를 제거해보십시오.

이것이 해결책이 아닌 경우 progress_meter.jpg에 퍼가기를 다시 확인하는 것이 좋습니다.

그 외에도 AS3 코드가 있어야합니다. 찾고있는 것은 객체 인스턴스화, 객체 제거 및 객체의 원격로드 (URLLoader 등)입니다. 그것들은 가장 큰 시간의 소비자가 될 것입니다.


편집 : 파일을 읽어야 이해할 수 있습니다. 내가 만든 가비지 계정 ([email protected])으로 이메일을 보낼 수 있습니다.

+0

덕분에, 나는 일반적으로 그 일들을 올바르게 처리하지만, 6 시간 동안이 작업을했거나 오랫동안 사용 해왔다. 나는 곧 사이즈 보고서를 할 것이다. – BumbleShrimp

+0

크기 보고서를 OP – BumbleShrimp

+0

에 넣었습니다 (제 대답을 편집했습니다.) – iND