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
물의 850 프레임? 임베디드 비디오 또는 850 이미지입니까? 어떤 크기 (치수)입니까? 'cacheAsBitmap'을 설정하는 것과 같은 일을하고 있습니까? 700ms의 일시 정지가 GC가 시작되는 것과 같은 메모리 문제 인 것 같습니다. 현재 메모리 사용량을 보여 주면서 앱을 프로파일 링 할 수 있습니까? 나는 당신이 당신의 물을 재생하려고 할 때, 당신의 앱을 멈추게 만드는 GC에 대한 기억이 필요하다는 것을 짐작할 수있다. – divillysausages
애니메이션은 이미 전체 시간 동안 실행 중입니다. 물이 특정 상태에있는 가장 가까운 지점으로 건너 뛰려고합니다. 후유증에서 만들어진 수입 된 .FLV이며 상징으로 변환됩니다. – BumbleShrimp
크기 보고서를 OP – BumbleShrimp