lib2.js 289 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241
  1. /**1.9.8*/
  2. var OS_PC = "pc", OS_IPHONE = "iPhone", OS_IPOD = "iPod", OS_IPAD = "iPad", OS_ANDROID = "Android", OS_WINDOWS_PHONE = "Windows Phone", OS_BLACK_BERRY = "BlackBerry", NONE = "none", UNDEFINED = "undefined", LANDSCAPE = "landscape", PORTRAIT = "portrait", mouseX, mouseY;
  3. function LEvent(type) {
  4. this.eventType = type;
  5. this._ll_preventDefault = false;
  6. }
  7. LEvent.prototype.preventDefault = function() {
  8. this._ll_preventDefault = true;
  9. };
  10. LEvent.INIT = "init";
  11. LEvent.COMPLETE = "complete";
  12. LEvent.ENTER_FRAME = "enter_frame";
  13. LEvent.WINDOW_RESIZE = "resize";
  14. LEvent.SOUND_COMPLETE = "sound_complete";
  15. LEvent.END_CONTACT = "endContact";
  16. LEvent.PRE_SOLVE = "preSolve";
  17. LEvent.POST_SOLVE = "postSolve";
  18. LEvent.BEGIN_CONTACT = "beginContact";
  19. LEvent.addEventListener = function(n, t, f, b) {
  20. if (b == null) {
  21. b = false;
  22. }
  23. if (n.addEventListener) {
  24. n.addEventListener(t, f, b);
  25. } else if (n.attachEvent) {
  26. n["e" + t + f] = f;
  27. n[t + f] = function() {
  28. n["e" + t + f]();
  29. };
  30. n.attachEvent("on" + t, n[t + f]);
  31. }
  32. };
  33. LEvent.removeEventListener = function(n, t, f, b) {
  34. if (b == null) {
  35. b = false;
  36. }
  37. if (n.removeEventListener) {
  38. n.removeEventListener(t, f, b);
  39. } else if (n.detachEvent) {
  40. n["e" + t + f] = f;
  41. n[t + f] = function() {
  42. n["e" + t + f]();
  43. };
  44. n.detachEvent("on" + t, n[t + f]);
  45. }
  46. };
  47. var LMouseEvent = function() {
  48. throw "LMouseEvent cannot be instantiated";
  49. };
  50. LMouseEvent.MOUSE_DOWN = "mousedown";
  51. LMouseEvent.MOUSE_UP = "mouseup";
  52. LMouseEvent.TOUCH_START = "touchstart";
  53. LMouseEvent.TOUCH_MOVE = "touchmove";
  54. LMouseEvent.TOUCH_END = "touchend";
  55. LMouseEvent.MOUSE_MOVE = "mousemove";
  56. LMouseEvent.MOUSE_OVER = "mouseover";
  57. LMouseEvent.MOUSE_OUT = "mouseout";
  58. LMouseEvent.DOUBLE_CLICK = "dblclick";
  59. var LMultitouchInputMode = function() {
  60. throw "LMultitouchInputMode cannot be instantiated";
  61. };
  62. LMultitouchInputMode.NONE = "none";
  63. LMultitouchInputMode.GESTURE = "gesture";
  64. LMultitouchInputMode.TOUCH_POINT = "touchPoint";
  65. var LMultitouch = function() {
  66. throw "LMultitouch cannot be instantiated";
  67. };
  68. LMultitouch.inputMode = "none";
  69. LMultitouch.touchs = [];
  70. var LTextEvent = function() {
  71. throw "LTextEvent cannot be instantiated";
  72. };
  73. LTextEvent.TEXT_INPUT = "textInput";
  74. LTextEvent.WIND_COMPLETE = "windComplete";
  75. var LFocusEvent = function() {
  76. throw "LFocusEvent cannot be instantiated";
  77. };
  78. LFocusEvent.FOCUS_IN = "focusIn";
  79. LFocusEvent.FOCUS_OUT = "focusOut";
  80. var LMouseEventContainer = (function() {
  81. function MouseEventContainer() {
  82. var s = this;
  83. s.container = {};
  84. s.dispatchAllEvent = false;
  85. s.mouseDownContainer = [];
  86. s.mouseUpContainer = [];
  87. s.mouseMoveContainer = [];
  88. s.mouseOverContainer = [];
  89. s.mouseOutContainer = [];
  90. s.mouseDblContainer = [];
  91. s.textFieldInputContainer = [];
  92. s.buttonContainer = [];
  93. };
  94. MouseEventContainer.prototype = {
  95. pushInputBox: function(d) {
  96. var s = this, c = s.textFieldInputContainer, i, l;
  97. for (i = 0, l = c.length; i < l; i++) {
  98. if (d.objectIndex == c[i].objectIndex) {
  99. return;
  100. }
  101. }
  102. s.textFieldInputContainer.push(d);
  103. },
  104. removeInputBox: function(d) {
  105. var s = this, c = s.textFieldInputContainer, i, l;
  106. for (i = 0, l = c.length; i < l; i++) {
  107. if (d.objectIndex == c[i].objectIndex) {
  108. s.textFieldInputContainer.splice(i, 1);
  109. break;
  110. }
  111. }
  112. },
  113. pushButton: function(d) {
  114. var s = this, c = s.buttonContainer, i, l;
  115. for (i = 0, l = c.length; i < l; i++) {
  116. if (d.objectIndex == c[i].objectIndex) {
  117. return;
  118. }
  119. }
  120. s.buttonContainer.push(d);
  121. },
  122. removeButton: function(d) {
  123. var s = this, c = s.buttonContainer, i, l;
  124. for (i = 0, l = c.length; i < l; i++) {
  125. if (d.objectIndex == c[i].objectIndex) {
  126. s.buttonContainer.splice(i, 1);
  127. break;
  128. }
  129. }
  130. },
  131. dispatchEventButton: function(e) {
  132. var s = this, c = s.buttonContainer, i, l;
  133. for (i = 0, l = c.length; i < l; i++) {
  134. if (typeof s.buttonContainer[i].ll_button_mode == "function") {
  135. s.buttonContainer[i].ll_button_mode(e);
  136. }
  137. }
  138. },
  139. addEvent: function(o, list, f) {
  140. var s = this;
  141. list.push({
  142. container: o,
  143. listener: f
  144. });
  145. },
  146. removeEvent: function(o, list, f) {
  147. var s = this, i, l;
  148. for (i = 0, l = list.length; i < l; i++) {
  149. if (list[i].container.objectIndex === o.objectIndex && (!f || list[i].listener == f)) {
  150. list.splice(i, 1);
  151. break;
  152. }
  153. }
  154. },
  155. addMouseDownEvent: function(o, f) {
  156. var s = this;
  157. s.addEvent(o, s.mouseDownContainer, f);
  158. },
  159. addMouseUpEvent: function(o, f) {
  160. var s = this;
  161. s.addEvent(o, s.mouseUpContainer, f);
  162. },
  163. addMouseMoveEvent: function(o, f) {
  164. var s = this;
  165. s.addEvent(o, s.mouseMoveContainer, f);
  166. },
  167. addMouseOverEvent: function(o, f) {
  168. var s = this;
  169. s.addEvent(o, s.mouseOverContainer, f);
  170. },
  171. addMouseOutEvent: function(o, f) {
  172. var s = this;
  173. s.addEvent(o, s.mouseOutContainer, f);
  174. },
  175. addMouseDblEvent: function(o, f) {
  176. var s = this;
  177. s.addEvent(o, s.mouseDblContainer, f);
  178. },
  179. addMouseEvent: function(o, t, f) {
  180. var s = this;
  181. if (t == LMouseEvent.MOUSE_DOWN) {
  182. s.addMouseDownEvent(o, f);
  183. } else if (t == LMouseEvent.MOUSE_UP) {
  184. s.addMouseUpEvent(o, f);
  185. } else if (t == LMouseEvent.MOUSE_OVER) {
  186. s.addMouseOverEvent(o, f);
  187. } else if (t == LMouseEvent.MOUSE_OUT) {
  188. s.addMouseOutEvent(o, f);
  189. } else if (t == LMouseEvent.MOUSE_MOVE) {
  190. s.addMouseMoveEvent(o, f);
  191. } else {
  192. s.addMouseDblEvent(o, f);
  193. }
  194. },
  195. hasEvent: function(o, list) {
  196. for (var i = 0, l = list.length; i < l; i++) {
  197. if (list[i].container.objectIndex === o.objectIndex) {
  198. return true;
  199. }
  200. }
  201. return false;
  202. },
  203. removeMouseDownEvent: function(o, f) {
  204. var s = this;
  205. s.removeEvent(o, s.mouseDownContainer, f);
  206. },
  207. removeMouseUpEvent: function(o, f) {
  208. var s = this;
  209. s.removeEvent(o, s.mouseUpContainer, f);
  210. },
  211. removeMouseMoveEvent: function(o, f) {
  212. var s = this;
  213. s.removeEvent(o, s.mouseMoveContainer, f);
  214. },
  215. removeMouseOverEvent: function(o, f) {
  216. var s = this;
  217. s.removeEvent(o, s.mouseOverContainer, f);
  218. },
  219. removeMouseOutEvent: function(o, f) {
  220. var s = this;
  221. s.removeEvent(o, s.mouseOutContainer, f);
  222. },
  223. removeMouseDblEvent: function(o, f) {
  224. var s = this;
  225. s.removeEvent(o, s.mouseDblContainer, f);
  226. },
  227. removeMouseEvent: function(o, t, f) {
  228. var s = this;
  229. if (t == LMouseEvent.MOUSE_DOWN) {
  230. s.removeMouseDownEvent(o, f);
  231. } else if (t == LMouseEvent.MOUSE_UP) {
  232. s.removeMouseUpEvent(o, f);
  233. } else if (t == LMouseEvent.MOUSE_OVER) {
  234. s.removeMouseOverEvent(o, f);
  235. } else if (t == LMouseEvent.MOUSE_OUT) {
  236. s.removeMouseOutEvent(o, f);
  237. } else if (t == LMouseEvent.MOUSE_MOVE) {
  238. s.removeMouseMoveEvent(o, f);
  239. } else {
  240. s.removeMouseDblEvent(o, f);
  241. }
  242. },
  243. dispatchMouseEvent: function(event, type) {
  244. var s = this;
  245. if (type == LMouseEvent.MOUSE_DOWN) {
  246. s.dispatchEvent(event, s.mouseDownContainer, LMouseEvent.MOUSE_DOWN);
  247. s.dispatchEvent(event, s.textFieldInputContainer);
  248. } else if (type == LMouseEvent.MOUSE_UP) {
  249. s.dispatchEvent(event, s.mouseUpContainer, LMouseEvent.MOUSE_UP);
  250. } else if (type == LMouseEvent.DOUBLE_CLICK) {
  251. s.dispatchEvent(event, s.mouseDblContainer, LMouseEvent.DOUBLE_CLICK);
  252. } else {
  253. s.dispatchEventButton(event);
  254. s.dispatchEvent(event, s.mouseOutContainer, LMouseEvent.MOUSE_OUT);
  255. s.dispatchEvent(event, s.mouseOverContainer, LMouseEvent.MOUSE_OVER);
  256. s.dispatchEvent(event, s.mouseMoveContainer, LMouseEvent.MOUSE_MOVE);
  257. }
  258. },
  259. getRootParams: function(s) {
  260. var p = s.parent, r = {
  261. x: 0,
  262. y: 0,
  263. scaleX: 1,
  264. scaleY: 1
  265. };
  266. while (p && p != "root") {
  267. r.x*=p.scaleX;
  268. r.y*=p.scaleY;
  269. r.x += p.x;
  270. r.y += p.y;
  271. r.scaleX*=p.scaleX;
  272. r.scaleY*=p.scaleY;
  273. p = p.parent;
  274. }
  275. return r;
  276. },
  277. _mouseEnabled: function(sp) {
  278. var self = this;
  279. if (!sp ||!sp.parent) {
  280. return false;
  281. }
  282. if (!sp.visible || (typeof sp.mouseEnabled != UNDEFINED&&!sp.mouseEnabled)) {
  283. return false;
  284. }
  285. var p = sp.parent;
  286. while (p && p != "root") {
  287. if (!p.mouseEnabled ||!p.mouseChildren ||!p.visible) {
  288. return false;
  289. }
  290. p = p.parent;
  291. if (!p) {
  292. return false;
  293. }
  294. }
  295. return true;
  296. },
  297. _dispatchEvent: function(event, type, st, index, fromIndex, endIndex) {
  298. var self = this, i, j, l = st.length;
  299. for (i = fromIndex; i <= endIndex && i < l; i++) {
  300. o = st[i];
  301. if (o.sp.objectIndex != index) {
  302. continue;
  303. }
  304. event.currentTarget = event.clickTarget = o.sp;
  305. if (!event.target) {
  306. event.target = o.sp;
  307. }
  308. event.event_type = type;
  309. event.selfX = (event.offsetX - o.co.x - o.sp.x) / (o.co.scaleX * o.sp.scaleX);
  310. event.selfY = (event.offsetY - o.co.y - o.sp.y) / (o.co.scaleY * o.sp.scaleY);
  311. o.listener(event, o.sp);
  312. }
  313. },
  314. dispatchEvent: function(event, list, type) {
  315. var self = this, sp, co, st = [], o, i, l;
  316. for (i = 0, l = list.length; i < l; i++) {
  317. sp = list[i].container || list[i];
  318. if (!self._mouseEnabled(sp)) {
  319. continue;
  320. }
  321. co = self.getRootParams(sp);
  322. if (!type && sp.mouseEvent) {
  323. sp.mouseEvent(event, LMouseEvent.MOUSE_DOWN, co);
  324. continue;
  325. }
  326. if (sp.ismouseon(event, co)) {
  327. if (type == LMouseEvent.MOUSE_OUT) {
  328. continue;
  329. }
  330. if (type == LMouseEvent.MOUSE_OVER) {
  331. if (sp.ll_mousein) {
  332. continue;
  333. }
  334. }
  335. if (type != LMouseEvent.MOUSE_UP) {
  336. sp.ll_mousein = true;
  337. }
  338. st.push({
  339. sp: sp,
  340. co: co,
  341. listener: list[i].listener
  342. });
  343. } else {
  344. if (type != LMouseEvent.MOUSE_OUT && type != LMouseEvent.MOUSE_OVER) {
  345. continue;
  346. }
  347. if (!sp.ll_mousein) {
  348. continue;
  349. }
  350. sp.ll_mousein = false;
  351. st.push({
  352. sp: sp,
  353. co: co,
  354. listener: list[i].listener
  355. });
  356. }
  357. }
  358. if (st.length == 0) {
  359. return;
  360. }
  361. if (st.length > 1) {
  362. st = st.sort(self._sort.bind(self));
  363. }
  364. l = st.length;
  365. for (i = 0; i < l; i++) {
  366. o = st[i];
  367. self._dispatchEvent(event, type, st, o.sp.objectIndex, i, self.dispatchAllEvent ? l - 1 : i);
  368. if (i < st.length - 1 && o.sp.objectIndex == st[i + 1].sp.objectIndex) {
  369. st.splice(i, 1);
  370. i--;
  371. continue;
  372. }
  373. var p;
  374. while (true) {
  375. if (!p) {
  376. p = o.sp.parent;
  377. event.target = o.sp;
  378. }
  379. if (!p || p == "root") {
  380. break;
  381. }
  382. self._dispatchEvent(event, type, st, p.objectIndex, i + 1, l);
  383. event.target = p;
  384. p = p.parent;
  385. if (!p || p == "root") {
  386. break;
  387. }
  388. }
  389. if (!self.dispatchAllEvent) {
  390. break;
  391. } else {
  392. continue;
  393. }
  394. }
  395. },
  396. set: function(t, v) {
  397. this.container[t] = v;
  398. },
  399. _sort: function(a, b) {
  400. var s = this, o1, o2, al = s._getSort(a.sp), bl = s._getSort(b.sp), i, l1, l2;
  401. for (i = 0, l1 = al.length, l2 = bl.length; i < l1 && i < l2; i++) {
  402. o1 = al[i];
  403. o2 = bl[i];
  404. if (o1.objectIndex == o2.objectIndex) {
  405. continue;
  406. }
  407. return o2.parent.getChildIndex(o2) - o1.parent.getChildIndex(o1);
  408. }
  409. return bl.length - al.length;
  410. },
  411. _getSort: function(layer) {
  412. var p = layer.parent, list = [layer];
  413. while (p && p != "root") {
  414. list.unshift(p);
  415. p = p.parent;
  416. }
  417. return list;
  418. }
  419. };
  420. return new MouseEventContainer();
  421. })();
  422. var LKeyboardEvent = function() {
  423. throw "LKeyboardEvent cannot be instantiated";
  424. };
  425. LKeyboardEvent.KEY_DOWN = "keydown";
  426. LKeyboardEvent.KEY_UP = "keyup";
  427. LKeyboardEvent.KEY_PRESS = "keypress";
  428. var LAccelerometerEvent = function() {
  429. throw "LAccelerometerEvent cannot be instantiated";
  430. };
  431. LAccelerometerEvent.DEVICEMOTION = "devicemotion";
  432. function LStageAlign() {
  433. throw "LStageAlign cannot be instantiated";
  434. }
  435. LStageAlign.TOP = "T";
  436. LStageAlign.BOTTOM = "B";
  437. LStageAlign.LEFT = "L";
  438. LStageAlign.RIGHT = "Re";
  439. LStageAlign.TOP_LEFT = "TL";
  440. LStageAlign.TOP_RIGHT = "TR";
  441. LStageAlign.TOP_MIDDLE = "TM";
  442. LStageAlign.BOTTOM_LEFT = "BL";
  443. LStageAlign.BOTTOM_RIGHT = "BR";
  444. LStageAlign.BOTTOM_MIDDLE = "BM";
  445. LStageAlign.MIDDLE = "M";
  446. function LStageScaleMode() {
  447. throw "LStageScaleMode cannot be instantiated";
  448. }
  449. LStageScaleMode.EXACT_FIT = "exactFit";
  450. LStageScaleMode.SHOW_ALL = "showAll";
  451. LStageScaleMode.NO_BORDER = "noBorder";
  452. LStageScaleMode.NO_SCALE = "noScale";
  453. var LGlobal = (function() {
  454. function LGlobal() {
  455. throw "LGlobal cannot be instantiated";
  456. }
  457. LGlobal.FULL_SCREEN = "full_screen";
  458. LGlobal.traceDebug = false;
  459. LGlobal.displayState = NONE;
  460. LGlobal.aspectRatio = NONE;
  461. LGlobal.canvasObj = null;
  462. LGlobal.canvas = null;
  463. LGlobal.webAudio = true;
  464. LGlobal.objectIndex = 1;
  465. LGlobal.stage = null;
  466. LGlobal.width = 0;
  467. LGlobal.height = 0;
  468. LGlobal.box2d = null;
  469. LGlobal.speed = 50;
  470. LGlobal.IS_MOUSE_DOWN = false;
  471. LGlobal.stopPropagation = false;
  472. LGlobal.preventDefault = true;
  473. LGlobal.childList = new Array();
  474. LGlobal.dragList = new Array();
  475. LGlobal.excludingContainer = new Array();
  476. LGlobal.fpsStatus = null;
  477. LGlobal.stageScale = "noScale";
  478. LGlobal.align = "M";
  479. LGlobal.mobile = false;
  480. LGlobal.canTouch = false;
  481. LGlobal.os = OS_PC;
  482. LGlobal.ios = false;
  483. LGlobal.android = false;
  484. LGlobal.android_new = false;
  485. LGlobal.backgroundColor = null;
  486. LGlobal.destroy = true;
  487. LGlobal.forceRefresh = false;
  488. LGlobal.devicePixelRatio = window.devicePixelRatio || 1;
  489. LGlobal.startTimer = 0;
  490. LGlobal.keepClear = true;
  491. LGlobal.top = 0;
  492. LGlobal.left = 0;
  493. LGlobal.window = window;
  494. (function(n) {
  495. LGlobal.isFirefox = (n.toLowerCase().indexOf('firefox') >= 0);
  496. if (n.indexOf(OS_IPHONE) > 0) {
  497. LGlobal.os = OS_IPHONE;
  498. LGlobal.canTouch = true;
  499. LGlobal.ios = true;
  500. } else if (n.indexOf(OS_IPOD) > 0) {
  501. LGlobal.os = OS_IPOD;
  502. LGlobal.canTouch = true;
  503. LGlobal.ios = true;
  504. } else if (n.indexOf(OS_IPAD) > 0) {
  505. LGlobal.os = OS_IPAD;
  506. LGlobal.ios = true;
  507. LGlobal.canTouch = true;
  508. } else if (n.indexOf(OS_ANDROID) > 0) {
  509. LGlobal.os = OS_ANDROID;
  510. LGlobal.canTouch = true;
  511. LGlobal.android = true;
  512. var i = n.indexOf(OS_ANDROID);
  513. if (parseInt(n.substr(i + 8, 1)) > 3) {
  514. LGlobal.android_new = true;
  515. }
  516. } else if (n.indexOf(OS_WINDOWS_PHONE) > 0) {
  517. LGlobal.os = OS_WINDOWS_PHONE;
  518. LGlobal.canTouch = true;
  519. } else if (n.indexOf(OS_BLACK_BERRY) > 0) {
  520. LGlobal.os = OS_BLACK_BERRY;
  521. LGlobal.canTouch = true;
  522. }
  523. LGlobal.mobile = LGlobal.canTouch;
  524. })(navigator.userAgent);
  525. LGlobal.setDebug = function(v) {
  526. LGlobal.traceDebug = v;
  527. };
  528. LGlobal.setCanvas = function(id, w, h) {
  529. LGlobal.ll_createCanvas(id, w, h);
  530. LGlobal.ll_createStage();
  531. if (LGlobal.displayState == LStage.FULL_SCREEN) {
  532. LGlobal.resize();
  533. } else if (typeof LGlobal.displayState == "number") {
  534. LGlobal.resize(LGlobal.width * LGlobal.displayState, LGlobal.height * LGlobal.displayState);
  535. }
  536. if (LGlobal.canTouch) {
  537. LGlobal.ll_clicks = 0;
  538. LGlobal.ll_prev_clickTime = 0;
  539. LEvent.addEventListener(LGlobal.canvasObj, LMouseEvent.TOUCH_START, LGlobal.ll_touchStart);
  540. LEvent.addEventListener(document, LMouseEvent.TOUCH_END, LGlobal.ll_touchEnd);
  541. LEvent.addEventListener(LGlobal.canvasObj, LMouseEvent.TOUCH_MOVE, LGlobal.ll_touchMove);
  542. } else {
  543. LEvent.addEventListener(LGlobal.canvasObj, LMouseEvent.DOUBLE_CLICK, LGlobal.ll_mouseDbclick);
  544. LEvent.addEventListener(LGlobal.canvasObj, LMouseEvent.MOUSE_DOWN, LGlobal.ll_mouseDown);
  545. LEvent.addEventListener(LGlobal.canvasObj, LMouseEvent.MOUSE_MOVE, LGlobal.ll_mouseMove);
  546. LEvent.addEventListener(LGlobal.canvasObj, LMouseEvent.MOUSE_UP, LGlobal.ll_mouseUp);
  547. LEvent.addEventListener(LGlobal.canvasObj, LMouseEvent.MOUSE_OUT, LGlobal.ll_mouseOut);
  548. }
  549. };
  550. LGlobal.ll_createCanvas = function(id, w, h) {
  551. LGlobal.id = id;
  552. LGlobal.object = document.getElementById(id);
  553. LGlobal.object.innerHTML = '<div style="position:absolute;margin:0;padding:0;overflow:visible;-webkit-transform:translateZ(0);z-index:0;">' + '<canvas id="' + LGlobal.id + '_canvas" style="margin:0;padding:0;width:' + w + 'px;height:' + h + 'px;">' + '<div id="noCanvas">' + "<p>Hey there,it looks like you're using Microsoft's Internet Explorer. Microsoft hates the Web and doesn't support HTML5:(</p>" + '</div>' + '</canvas></div>' + '<div id="' + LGlobal.id + '_InputText" style="position:absolute;margin:0;padding:0;z-index:10;display:none;">' + '<textarea rows="1" id="' + LGlobal.id + '_InputTextareaBox" style="resize:none;background:transparent;border:0px;"></textarea>' + '<input type="text" id="' + LGlobal.id + '_InputTextBox" style="background:transparent;border:0px;"/>' + '<input type="password" id="' + LGlobal.id + '_passwordBox" style="background:transparent;border:0px;"/></div>';
  554. LGlobal.canvasObj = document.getElementById(LGlobal.id + "_canvas");
  555. LGlobal._canvas = document.createElement("canvas");
  556. LGlobal._context = LGlobal._canvas.getContext("2d");
  557. if (LGlobal._context) {
  558. LGlobal.canvasObj.innerHTML = "";
  559. }
  560. LGlobal.inputBox = document.getElementById(LGlobal.id + '_InputText');
  561. LGlobal.inputTextareaBoxObj = document.getElementById(LGlobal.id + '_InputTextareaBox');
  562. LGlobal.inputTextBoxObj = document.getElementById(LGlobal.id + '_InputTextBox');
  563. LGlobal.passwordBoxObj = document.getElementById(LGlobal.id + '_passwordBox');
  564. LGlobal.inputTextField = null;
  565. if (w) {
  566. LGlobal.canvasObj.width = w;
  567. }
  568. if (h) {
  569. LGlobal.canvasObj.height = h;
  570. }
  571. LGlobal.width = LGlobal.canvasObj.width;
  572. LGlobal.height = LGlobal.canvasObj.height;
  573. LGlobal.canvasStyleWidth = LGlobal.width;
  574. LGlobal.canvasStyleHeight = LGlobal.height;
  575. LGlobal.canvas = LGlobal.canvasObj.getContext("2d");
  576. LGlobal.offsetX = mouseX = 0;
  577. LGlobal.offsetY = mouseY = 0;
  578. };
  579. LGlobal.ll_createStage = function() {
  580. LGlobal.stage = new LSprite();
  581. LGlobal.stage.parent = "root";
  582. LGlobal.childList.push(LGlobal.stage);
  583. LGlobal.stage.baseAddEvent = LGlobal.stage.addEventListener;
  584. LGlobal.stage.baseRemoveEvent = LGlobal.stage.removeEventListener;
  585. LGlobal.stage.addEventListener = function(type, listener) {
  586. if (type == LEvent.WINDOW_RESIZE) {
  587. LGlobal.stage.onresizeListener = listener;
  588. LGlobal.stage.onresize = function(e) {
  589. LGlobal.stage.onresizeEvent = e;
  590. };
  591. LEvent.addEventListener(LGlobal.window, type, LGlobal.stage.onresize);
  592. } else if (type == LKeyboardEvent.KEY_DOWN || type == LKeyboardEvent.KEY_UP || type == LKeyboardEvent.KEY_PRESS) {
  593. LEvent.addEventListener(LGlobal.window, type, listener);
  594. } else {
  595. LGlobal.stage.baseAddEvent(type, listener);
  596. }
  597. };
  598. LGlobal.stage.removeEventListener = function(type, listener) {
  599. if (type == LEvent.WINDOW_RESIZE) {
  600. LEvent.removeEventListener(LGlobal.window, LEvent.WINDOW_RESIZE, LGlobal.stage.onresize);
  601. delete LGlobal.stage.onresize;
  602. delete LGlobal.stage.onresizeListener;
  603. } else if (type == LKeyboardEvent.KEY_DOWN || type == LKeyboardEvent.KEY_UP || type == LKeyboardEvent.KEY_PRESS) {
  604. LEvent.removeEventListener(LGlobal.window, type, listener);
  605. } else {
  606. LGlobal.stage.baseRemoveEvent(type, listener);
  607. }
  608. };
  609. };
  610. LGlobal.ll_touchStart = function(event) {
  611. if (LGlobal.inputBox.style.display != NONE) {
  612. LGlobal.inputTextField._ll_getValue();
  613. }
  614. var canvasX, canvasY, eve, k, i;
  615. canvasX = parseInt(0 + LGlobal.object.style.left) + parseInt(LGlobal.canvasObj.style.marginLeft);
  616. canvasY = parseInt(0 + LGlobal.object.style.top) + parseInt(LGlobal.canvasObj.style.marginTop);
  617. if (LMultitouch.inputMode == LMultitouchInputMode.NONE) {
  618. eve = LGlobal.ll_touchStartEvent(event, 0, canvasX, canvasY);
  619. } else if (LMultitouch.inputMode == LMultitouchInputMode.TOUCH_POINT) {
  620. for (var i = 0, l = event.touches.length; i < l; i++) {
  621. if (!LMultitouch.touchs["touch" + event.touches[i].identifier]) {
  622. eve = LGlobal.ll_touchStartEvent(event, i, canvasX, canvasY);
  623. }
  624. }
  625. }
  626. var date = new Date();
  627. var clickTime = date.getTime();
  628. LGlobal.ll_clicks = (clickTime <= (LGlobal.ll_prev_clickTime + 500)) ? (LGlobal.ll_clicks + 1) : 1;
  629. LGlobal.ll_prev_clickTime = clickTime;
  630. if (LGlobal.ll_clicks === 2) {
  631. LGlobal.mouseEvent(eve, LMouseEvent.DOUBLE_CLICK);
  632. LGlobal.ll_clicks = 0;
  633. }
  634. LGlobal.IS_MOUSE_DOWN = true;
  635. if (LGlobal.mouseJoint_start) {
  636. LGlobal.mouseJoint_start(eve);
  637. }
  638. LGlobal.touchHandler(event);
  639. };
  640. LGlobal.ll_touchStartEvent = function(event, eveIndex, canvasX, canvasY) {
  641. var eve = {
  642. offsetX: (event.touches[eveIndex].pageX - canvasX),
  643. offsetY: (event.touches[eveIndex].pageY - canvasY),
  644. touchPointID: event.touches[eveIndex].identifier
  645. };
  646. eve.offsetX = LGlobal.ll_scaleX(eve.offsetX);
  647. eve.offsetY = LGlobal.ll_scaleY(eve.offsetY);
  648. mouseX = LGlobal.offsetX = eve.offsetX;
  649. mouseY = LGlobal.offsetY = eve.offsetY;
  650. LMultitouch.touchs["touch" + eve.touchPointID] = eve;
  651. LGlobal.mouseEvent(eve, LMouseEvent.MOUSE_DOWN);
  652. LGlobal.buttonStatusEvent = eve;
  653. return eve;
  654. };
  655. LGlobal.ll_touchEnd = function(event) {
  656. var e, eve, k, i, l, h;
  657. if (LMultitouch.inputMode == LMultitouchInputMode.TOUCH_POINT) {
  658. for (k in LMultitouch.touchs) {
  659. e = LMultitouch.touchs[k];
  660. h = false;
  661. for (i = 0, l = event.touches.length; i < l; i++) {
  662. if (event.touches[i].identifier == e.touchPointID) {
  663. h = true;
  664. break;
  665. }
  666. }
  667. if (!h) {
  668. eve = e;
  669. delete LMultitouch.touchs[k];
  670. LGlobal.mouseEvent(eve, LMouseEvent.MOUSE_UP);
  671. }
  672. }
  673. }
  674. if (!eve) {
  675. eve = {
  676. offsetX: LGlobal.offsetX,
  677. offsetY: LGlobal.offsetY
  678. };
  679. }
  680. LGlobal.mouseEvent(eve, LMouseEvent.MOUSE_UP);
  681. LGlobal.touchHandler(event);
  682. LGlobal.IS_MOUSE_DOWN = false;
  683. LGlobal.buttonStatusEvent = null;
  684. if (LGlobal.mouseJoint_end) {
  685. LGlobal.mouseJoint_end();
  686. }
  687. };
  688. LGlobal.ll_touchMove = function(e) {
  689. var cX, cY, eve, l, ll = e.touches.length;
  690. cX = parseInt(0 + LGlobal.object.style.left) + parseInt(LGlobal.canvasObj.style.marginLeft);
  691. cY = parseInt(0 + LGlobal.object.style.top) + parseInt(LGlobal.canvasObj.style.marginTop);
  692. if (LMultitouch.inputMode == LMultitouchInputMode.NONE) {
  693. ll = 1;
  694. }
  695. for (i = 0, l = e.touches.length; i < l && i < ll; i++) {
  696. eve = {
  697. offsetX: (e.touches[i].pageX - cX),
  698. offsetY: (e.touches[i].pageY - cY),
  699. touchPointID: e.touches[i].identifier
  700. };
  701. eve.offsetX = LGlobal.ll_scaleX(eve.offsetX);
  702. eve.offsetY = LGlobal.ll_scaleY(eve.offsetY);
  703. mouseX = LGlobal.offsetX = eve.offsetX;
  704. mouseY = LGlobal.offsetY = eve.offsetY;
  705. if (LMultitouch.touchs["touch" + eve.touchPointID] && LMultitouch.touchs["touch" + eve.touchPointID].offsetX == eve.offsetX && LMultitouch.touchs["touch" + eve.touchPointID].offsetY == eve.offsetY) {
  706. continue;
  707. }
  708. LGlobal.buttonStatusEvent = eve;
  709. LMultitouch.touchs["touch" + eve.touchPointID] = eve;
  710. LGlobal.mouseEvent(eve, LMouseEvent.MOUSE_MOVE);
  711. }
  712. LGlobal.touchHandler(e);
  713. if (LGlobal.mouseJoint_move) {
  714. LGlobal.mouseJoint_move(eve);
  715. }
  716. };
  717. LGlobal.ll_mouseDbclick = function(e) {
  718. if (e.offsetX == null && e.layerX != null) {
  719. e.offsetX = e.layerX;
  720. e.offsetY = e.layerY;
  721. }
  722. var event = {
  723. button: e.button
  724. };
  725. event.offsetX = LGlobal.ll_scaleX(e.offsetX);
  726. event.offsetY = LGlobal.ll_scaleY(e.offsetY);
  727. LGlobal.mouseEvent(event, LMouseEvent.DOUBLE_CLICK);
  728. };
  729. LGlobal.ll_mouseDown = function(e) {
  730. if (e.offsetX == null && e.layerX != null) {
  731. e.offsetX = e.layerX;
  732. e.offsetY = e.layerY;
  733. }
  734. if (LGlobal.inputBox.style.display != NONE) {
  735. LGlobal.inputTextField._ll_getValue();
  736. }
  737. var event = {
  738. button: e.button
  739. };
  740. event.offsetX = LGlobal.ll_scaleX(e.offsetX);
  741. event.offsetY = LGlobal.ll_scaleY(e.offsetY);
  742. LGlobal.mouseEvent(event, LMouseEvent.MOUSE_DOWN);
  743. LGlobal.IS_MOUSE_DOWN = true;
  744. if (LGlobal.mouseJoint_start) {
  745. LGlobal.mouseJoint_start(event);
  746. }
  747. };
  748. LGlobal.ll_mouseMove = function(e) {
  749. if (e.offsetX == null && e.layerX != null) {
  750. e.offsetX = e.layerX;
  751. e.offsetY = e.layerY;
  752. }
  753. var event = {};
  754. event.offsetX = LGlobal.ll_scaleX(e.offsetX);
  755. event.offsetY = LGlobal.ll_scaleY(e.offsetY);
  756. LGlobal.buttonStatusEvent = event;
  757. mouseX = LGlobal.offsetX = event.offsetX;
  758. mouseY = LGlobal.offsetY = event.offsetY;
  759. LGlobal.cursor = "default";
  760. LGlobal.mouseEvent(event, LMouseEvent.MOUSE_MOVE);
  761. document.body.style.cursor = LGlobal.cursor;
  762. if (LGlobal.mouseJoint_move) {
  763. LGlobal.mouseJoint_move(event);
  764. }
  765. };
  766. LGlobal.ll_mouseUp = function(e) {
  767. if (e.offsetX == null && e.layerX != null) {
  768. e.offsetX = e.layerX;
  769. e.offsetY = e.layerY;
  770. }
  771. var event = {
  772. button: e.button
  773. };
  774. event.offsetX = LGlobal.ll_scaleX(e.offsetX);
  775. event.offsetY = LGlobal.ll_scaleY(e.offsetY);
  776. LGlobal.mouseEvent(event, LMouseEvent.MOUSE_UP);
  777. LGlobal.IS_MOUSE_DOWN = false;
  778. if (LGlobal.mouseJoint_end) {
  779. LGlobal.mouseJoint_end();
  780. }
  781. };
  782. LGlobal.ll_mouseOut = function(e) {
  783. if (e.offsetX == null && e.layerX != null) {
  784. e.offsetX = e.layerX;
  785. e.offsetY = e.layerY;
  786. }
  787. var event = {};
  788. event.offsetX = LGlobal.ll_scaleX(e.offsetX);
  789. event.offsetY = LGlobal.ll_scaleY(e.offsetY);
  790. LGlobal.mouseEvent(event, LMouseEvent.MOUSE_OUT);
  791. LGlobal.IS_MOUSE_DOWN = false;
  792. };
  793. LGlobal.touchHandler = function(e) {
  794. if (LGlobal.stopPropagation) {
  795. e.stopPropagation();
  796. }
  797. if (LGlobal.preventDefault) {
  798. e.preventDefault();
  799. }
  800. if (e.stopImmediatePropagation) {
  801. e.stopImmediatePropagation();
  802. }
  803. return e;
  804. };
  805. LGlobal.mouseEvent = function(e, t) {
  806. if (t == LMouseEvent.MOUSE_MOVE) {
  807. LGlobal.dragHandler(e);
  808. }
  809. if (LMouseEventContainer.container[t]) {
  810. LMouseEventContainer.dispatchMouseEvent(e, t);
  811. return;
  812. }
  813. for (var k = LGlobal.childList.length - 1; k >= 0; k--) {
  814. if (LGlobal.childList[k].mouseEvent && LGlobal.childList[k].mouseEvent(e, t)) {
  815. break;
  816. }
  817. }
  818. };
  819. LGlobal.dragHandler = function(e) {
  820. var i, s, c, d = LGlobal.dragList;
  821. for (i = d.length - 1; i >= 0; i--) {
  822. s = d[i];
  823. if (LGlobal.canTouch && s.ll_touchPointID != e.touchPointID) {
  824. continue;
  825. }
  826. c = s.getAbsoluteScale();
  827. s.x = s.ll_dragStartX + (e.offsetX - s.ll_dragMX) * s.scaleX / c.scaleX;
  828. s.y = s.ll_dragStartY + (e.offsetY - s.ll_dragMY) * s.scaleY / c.scaleY;
  829. if (s.dragRange) {
  830. if (s.x < s.dragRange.left) {
  831. s.x = s.dragRange.left;
  832. } else if (s.x > s.dragRange.right) {
  833. s.x = s.dragRange.right;
  834. }
  835. if (s.y < s.dragRange.top) {
  836. s.y = s.dragRange.top;
  837. } else if (s.y > s.dragRange.bottom) {
  838. s.y = s.dragRange.bottom;
  839. }
  840. }
  841. break;
  842. }
  843. };
  844. LGlobal._ll_mobile = function() {
  845. var w1 = LGlobal.width * 0.3, h1 = w1 * 1.5, s = LGlobal.width * 0.05, ss = w1 * 0.05, sm = w1 * 0.15, sx = w1 * 0.3, sh = h1 * 0.20, c = '#cccccc', d = '#000000', f = '#ffffff', h = '#ff0000', b, w1, h1, m, m1, n, v;
  846. b = new LSprite();
  847. addChild(b);
  848. w1 = LGlobal.width * 0.3, h1 = w1 * 1.5;
  849. b.graphics.drawRoundRect(1, d, [s, s, w1, h1, s], true, c);
  850. b.graphics.drawRoundRect(1, d, [s + ss, s + ss, w1 - ss * 2, h1 - ss * 2, s], true, d);
  851. b.graphics.drawRect(1, f, [s + sm, s + sh, w1 - sm * 2, h1 - sh * 2], true, f);
  852. b.graphics.drawArc(1, f, [s + w1 * 0.5, s + h1 - ss * 3.5, ss * 1.5, 0, 2 * Math.PI]);
  853. b.graphics.drawRoundRect(1, f, [s + sx, s + sm, w1 - sx * 2, ss, ss * 0.5]);
  854. m = new LSprite();
  855. m.x =- (w1 - sm * 2) * 0.5;
  856. m.y =- ss * 0.5;
  857. m.graphics.drawRect(1, h, [0, 0, w1 - sm * 2, ss], true, h);
  858. m1 = new LSprite();
  859. m1.y =- (w1 - sm * 2) * 0.5;
  860. m1.x =- ss * 0.5;
  861. m1.graphics.drawRect(1, h, [0, 0, ss, w1 - sm * 2], true, h);
  862. n = new LSprite();
  863. n.x = s + sx + (w1 - sx * 2) * 0.5;
  864. n.y = s + sh + (h1 - sh * 2) * 0.5;
  865. n.rotate = 45;
  866. n.addChild(m);
  867. n.addChild(m1);
  868. b.addChild(n);
  869. v = new LSprite();
  870. v.graphics.drawVertices(2, d, [[0, 0], [sm, sm ], [0, sm * 2]], true, c);
  871. v.x = s * 1.5 + h1;
  872. v.y = s * 1.5 + h1 * 0.5;
  873. addChild(v);
  874. b.arrow = v;
  875. var fn = function() {
  876. setTimeout(function() {
  877. location.href = location.href;
  878. }, 100);
  879. };
  880. window.onorientationchange = fn;
  881. return b;
  882. };
  883. LGlobal.verticalError = function() {
  884. var w1 = LGlobal.width * 0.3, s = LGlobal.width * 0.05;
  885. var b = LGlobal._ll_mobile();
  886. var d = b.clone();
  887. d.getChildAt(0).visible = false;
  888. d.x = LGlobal.width * 0.5 + s;
  889. addChild(d);
  890. b.rotate = 90;
  891. b.x = LGlobal.width * 0.5 + s;
  892. b.y = w1 * 0.5;
  893. };
  894. LGlobal.horizontalError = function() {
  895. var w1 = LGlobal.width * 0.3, s = LGlobal.width * 0.05;
  896. var b = LGlobal._ll_mobile();
  897. var d = b.clone();
  898. d.getChildAt(0).visible = false;
  899. d.rotate = 90;
  900. d.x = LGlobal.width - s;
  901. d.y = w1 * 0.5;
  902. addChild(d);
  903. b.arrow.x = s * 1.5 + w1;
  904. };
  905. LGlobal.onShow = function() {
  906. if (LGlobal.canvas == null) {
  907. return;
  908. }
  909. if (LGlobal.fpsStatus) {
  910. LGlobal.fpsStatus.reset();
  911. }
  912. if (LGlobal.stage.onresizeEvent) {
  913. LGlobal.stage.onresizeListener(LGlobal.stage.onresizeEvent);
  914. delete LGlobal.stage.onresizeEvent;
  915. }
  916. if (LGlobal.forceRefresh) {
  917. LGlobal.canvasObj.width = LGlobal.canvasObj.width;
  918. LGlobal.forceRefresh = false;
  919. }
  920. LGlobal.canvas.beginPath();
  921. if (LGlobal.box2d != null) {
  922. LGlobal.box2d.ll_show();
  923. if (!LGlobal.traceDebug && LGlobal.keepClear) {
  924. LGlobal.canvas.clearRect(0, 0, LGlobal.width + 1, LGlobal.height + 1);
  925. }
  926. } else {
  927. if (LGlobal.keepClear) {
  928. LGlobal.canvas.clearRect(0, 0, LGlobal.width + 1, LGlobal.height + 1);
  929. }
  930. if (LGlobal.backgroundColor !== null) {
  931. LGlobal.canvas.fillStyle = LGlobal.backgroundColor;
  932. LGlobal.canvas.fillRect(0, 0, LGlobal.width, LGlobal.height);
  933. }
  934. }
  935. LGlobal.show(LGlobal.childList);
  936. };
  937. LGlobal.show = function(s) {
  938. for (var i = 0, l = s.length, c; i < l; i++) {
  939. c = s[i];
  940. if (c && c.ll_show) {
  941. c.ll_show();
  942. if (c._ll_removeFromSelf) {
  943. i--;
  944. l--;
  945. }
  946. }
  947. }
  948. };
  949. LGlobal.divideCoordinate = function(w, h, row, col) {
  950. var i, j, cw = w / col, ch = h / row, r = [], c;
  951. for (i = 0; i < row; i++) {
  952. c = [];
  953. for (j = 0; j < col; j++) {
  954. c.push({
  955. x: cw * j,
  956. y: ch * i,
  957. width: cw,
  958. height: ch
  959. });
  960. }
  961. r.push(c);
  962. }
  963. return r;
  964. };
  965. LGlobal._create_loading_color = function() {
  966. var co = LGlobal.canvas.createRadialGradient(LGlobal.width / 2, LGlobal.height, 0, LGlobal.width / 2, 0, LGlobal.height);
  967. co.addColorStop(0, "red");
  968. co.addColorStop(0.3, "orange");
  969. co.addColorStop(0.4, "yellow");
  970. co.addColorStop(0.5, "green");
  971. co.addColorStop(0.8, "blue");
  972. co.addColorStop(1, "violet");
  973. return co;
  974. };
  975. LGlobal.hitPolygon = function(list, x, y) {
  976. var c = 0, p0 = list[0], b0x = (x <= p0[0]), b0y = (y <= p0[1]), i, l, p1, b1x, b1y;
  977. for (i = 1, l = list.length; i < l + 1; i++) {
  978. p1 = list[i % l];
  979. b1x = (x <= p1[0]);
  980. b1y = (y <= p1[1]);
  981. if (b0y != b1y) {
  982. if (b0x == b1x) {
  983. if (b0x) {
  984. c += (b0y?-1 : 1);
  985. }
  986. } else {
  987. if (x <= (p0[0] + (p1[0] - p0[0]) * (y - p0[1]) / (p1[1] - p0[1]))) {
  988. c += (b0y?-1 : 1);
  989. }
  990. }
  991. }
  992. p0 = p1;
  993. b0x = b1x;
  994. b0y = b1y;
  995. }
  996. return 0 != c;
  997. };
  998. LGlobal.hitTestPolygon = function(p1, p2) {
  999. var i, j, l, listA, normals, vecs, list = [[p1, [], []], [p2, [], []]];
  1000. for (j = 0; j < list.length; j++) {
  1001. listA = list[j][0], normals = list[j][1];
  1002. for (i = 0, l = listA.length; i < l; i++) {
  1003. list[j][2].push(new LVec2(listA[i][0], listA[i][1]));
  1004. if (i < l - 1) {
  1005. normals.push((new LVec2(listA[i + 1][0] - listA[i][0], listA[i + 1][1] - listA[i][1])).normL());
  1006. }
  1007. }
  1008. normals.push((new LVec2(listA[0][0] - listA[l - 1][0], listA[0][1] - listA[l - 1][1])).normL());
  1009. }
  1010. for (j = 0; j < list.length; j++) {
  1011. normals = list[j][1];
  1012. for (i = 0, l = normals.length; i < l; i++) {
  1013. var r1 = LVec2.getMinMax(list[0][2], normals[i]);
  1014. var r2 = LVec2.getMinMax(list[1][2], normals[i]);
  1015. if (r1.max_o < r2.min_o || r1.min_o > r2.max_o) {
  1016. return false;
  1017. }
  1018. }
  1019. }
  1020. return true;
  1021. };
  1022. LGlobal.hitTestPolygonArc = function(vs, arc) {
  1023. if (LGlobal.hitPolygon(vs, arc[0], arc[1])) {
  1024. return true;
  1025. }
  1026. var i, j, l, p1, p2, v1, v2, ext, inn, l2;
  1027. for (i = 0, l = vs.length; i < l; i++) {
  1028. j = i < l - 1 ? i + 1 : 0;
  1029. p1 = vs[i], p2 = vs[j];
  1030. v1 = new LVec2(arc[0] - p1[0], arc[1] - p1[1]), v2 = new LVec2(p2[0] - p1[0], p2[1] - p1[1]);
  1031. l2 = v2.normalize();
  1032. inn = LVec2.dot(v1, l2);
  1033. if (inn <= 0) {
  1034. if (v1.x * v1.x + v1.y * v1.y < arc[3]) {
  1035. return true;
  1036. }
  1037. } else if (inn * inn < v2.x * v2.x + v2.y * v2.y) {
  1038. ext = LVec2.cross(v1, l2);
  1039. if (ext * ext < arc[3]) {
  1040. return true;
  1041. }
  1042. }
  1043. }
  1044. return false;
  1045. };
  1046. LGlobal.hitTestArc = function(objA, objB, objAR, objBR) {
  1047. var rA = objA.getWidth() * 0.5, rB = objB.getWidth() * 0.5, xA = objA._startX ? objA._startX(): objA.startX(), xB = objB._startX ? objB._startX(): objB.startX(), yA = objA._startY ? objA._startY(): objA.startY(), yB = objB._startY ? objB._startY(): objB.startY();
  1048. if (typeof objAR != UNDEFINED) {
  1049. xA += (rA - objAR);
  1050. yA += (rA - objAR);
  1051. rA = objAR;
  1052. }
  1053. if (typeof objBR != UNDEFINED) {
  1054. xB += (rB - objBR);
  1055. yB += (rB - objBR);
  1056. rB = objBR;
  1057. }
  1058. var disx = xA + rA - xB - rB, disy = yA + rA - yB - rB;
  1059. return disx * disx + disy * disy < (rA + rB) * (rA + rB);
  1060. };
  1061. LGlobal.hitTestRect = function(objA, objB, vecA, vecB) {
  1062. var wA = objA.getWidth(), wB = objB.getWidth(), hA = objA.getHeight(), hB = objB.getHeight(), xA = objA._startX ? objA._startX(): objA.startX(), xB = objB._startX ? objB._startX(): objB.startX(), yA = objA._startY ? objA._startY(): objA.startY(), yB = objB._startY ? objB._startY(): objB.startY();
  1063. if (typeof vecA != UNDEFINED) {
  1064. xA += (wA - vecA[0]) * 0.5;
  1065. yA += (hA - vecA[1]) * 0.5;
  1066. wA = vecA[0];
  1067. hA = vecA[1];
  1068. }
  1069. if (typeof vecB != UNDEFINED) {
  1070. xB += (wB - vecB[0]) * 0.5;
  1071. yB += (hB - vecB[1]) * 0.5;
  1072. wB = vecB[0];
  1073. hB = vecB[1];
  1074. }
  1075. var minx = xA > xB ? xA: xB, miny = yA > yB ? yA: yB, maxx = (xA + wA) > (xB + wB) ? (xB + wB): (xA + wA), maxy = (yA + hA) > (yB + hB) ? (yB + hB): (yA + hA);
  1076. return minx <= maxx && miny <= maxy;
  1077. };
  1078. LGlobal.hitTest = LGlobal.hitTestRect;
  1079. LGlobal.setFrameRate = function(s) {
  1080. if (LGlobal.frameRate) {
  1081. clearInterval(LGlobal.frameRate);
  1082. }
  1083. LGlobal.speed = s;
  1084. LGlobal.frameRate = setInterval(function() {
  1085. LGlobal.onShow();
  1086. }, s);
  1087. };
  1088. LGlobal.ll_scaleX = function(v) {
  1089. return (v - LGlobal.left) * LGlobal.width / LGlobal.canvasStyleWidth;
  1090. };
  1091. LGlobal.ll_scaleY = function(v) {
  1092. return (v - LGlobal.top) * LGlobal.height / LGlobal.canvasStyleHeight;
  1093. };
  1094. LGlobal.ll_setStageSize = function(w, h) {
  1095. w = Math.ceil(w);
  1096. h = Math.ceil(h);
  1097. LGlobal.canvasObj.style.width = w + "px";
  1098. LGlobal.canvasObj.style.height = h + "px";
  1099. LGlobal.canvasStyleWidth = w;
  1100. LGlobal.canvasStyleHeight = h;
  1101. };
  1102. LGlobal.resize = function(canvasW, canvasH) {
  1103. var w, h, t = 0, l = 0, ww = window.innerWidth, wh = window.innerHeight;
  1104. if (canvasW) {
  1105. w = canvasW;
  1106. }
  1107. if (canvasH) {
  1108. h = canvasH;
  1109. }
  1110. if (LGlobal.stageScale == "noScale") {
  1111. w = canvasW || LGlobal.width;
  1112. h = canvasH || LGlobal.height;
  1113. }
  1114. switch (LGlobal.stageScale) {
  1115. case "exactFit":
  1116. w = canvasW || ww;
  1117. h = canvasH || wh;
  1118. break;
  1119. case "noBorder":
  1120. w = canvasW || ww;
  1121. h = canvasH || LGlobal.height * ww / LGlobal.width;
  1122. switch (LGlobal.align) {
  1123. case LStageAlign.BOTTOM:
  1124. case LStageAlign.BOTTOM_LEFT:
  1125. case LStageAlign.BOTTOM_RIGHT:
  1126. case LStageAlign.BOTTOM_MIDDLE:
  1127. t = wh - h;
  1128. break;
  1129. }
  1130. break;
  1131. case "showAll":
  1132. if (ww / wh > LGlobal.width / LGlobal.height) {
  1133. h = canvasH || wh;
  1134. w = canvasW || LGlobal.width * wh / LGlobal.height;
  1135. } else {
  1136. w = canvasW || ww;
  1137. h = canvasH || LGlobal.height * ww / LGlobal.width;
  1138. }
  1139. case "noScale":
  1140. default:
  1141. switch (LGlobal.align) {
  1142. case LStageAlign.BOTTOM:
  1143. case LStageAlign.BOTTOM_LEFT:
  1144. t = wh - h;
  1145. break;
  1146. case LStageAlign.RIGHT:
  1147. case LStageAlign.TOP_RIGHT:
  1148. l = ww - w;
  1149. break;
  1150. case LStageAlign.TOP_MIDDLE:
  1151. l = (ww - w) * 0.5;
  1152. break;
  1153. case LStageAlign.BOTTOM_RIGHT:
  1154. t = wh - h;
  1155. l = ww - w;
  1156. break;
  1157. case LStageAlign.BOTTOM_MIDDLE:
  1158. t = wh - h;
  1159. l = (ww - w) * 0.5;
  1160. break;
  1161. case LStageAlign.MIDDLE:
  1162. t = (wh - h) * 0.5;
  1163. l = (ww - w) * 0.5;
  1164. break;
  1165. case LStageAlign.TOP:
  1166. case LStageAlign.LEFT:
  1167. case LStageAlign.TOP_LEFT:
  1168. default:
  1169. }
  1170. }
  1171. LGlobal.canvasObj.style.marginTop = t + "px";
  1172. LGlobal.canvasObj.style.marginLeft = l + "px";
  1173. if (LGlobal.isFirefox) {
  1174. LGlobal.left = parseInt(LGlobal.canvasObj.style.marginLeft);
  1175. LGlobal.top = parseInt(LGlobal.canvasObj.style.marginTop);
  1176. }
  1177. LGlobal.ll_setStageSize(w, h);
  1178. };
  1179. LGlobal.sleep = function(s) {
  1180. var d = new Date();
  1181. while ((new Date().getTime() - d.getTime()) < s) {}
  1182. };
  1183. LGlobal.screen = function(a) {
  1184. LGlobal.displayState = a;
  1185. if (LGlobal.stage) {
  1186. if (typeof LGlobal.displayState == "number") {
  1187. LGlobal.resize(LGlobal.width * LGlobal.displayState, LGlobal.height * LGlobal.displayState);
  1188. } else {
  1189. LGlobal.resize();
  1190. }
  1191. }
  1192. };
  1193. return LGlobal;
  1194. })();
  1195. var LSystem = LGlobal;
  1196. var LStage = LGlobal;
  1197. if (!Array.prototype.indexOf) {
  1198. Array.prototype.indexOf = function(elt) {
  1199. var len = this.length>>>0;
  1200. var from = Number(arguments[1]) || 0;
  1201. from = (from < 0) ? Math.ceil(from) : Math.floor(from);
  1202. if (from < 0) {
  1203. from += len;
  1204. }
  1205. for (; from < len; from++) {
  1206. if (from in this && this[from] === elt) {
  1207. return from;
  1208. }
  1209. }
  1210. return - 1;
  1211. };
  1212. }
  1213. if (!Array.isArray) {
  1214. Array.isArray = function(value) {
  1215. return Object.prototype.toString.apply(value) == '[object Array]';
  1216. };
  1217. }
  1218. if (!Function.prototype.bind) {
  1219. Function.prototype.bind = function(oThis) {
  1220. if (typeof this !== "function") {
  1221. throw new TypeError("Function.prototype.bind-what is trying to be bound is not callable");
  1222. }
  1223. var aArgs = Array.prototype.slice.call(arguments, 1), fToBind = this, fNOP = function() {}, fBound = function() {
  1224. return fToBind.apply(this instanceof fNOP && oThis ? this : oThis, aArgs.concat(Array.prototype.slice.call(arguments)));
  1225. };
  1226. fNOP.prototype = this.prototype;
  1227. fBound.prototype = new fNOP();
  1228. return fBound;
  1229. };
  1230. }
  1231. if (!Array.prototype.find) {
  1232. Array.prototype.find = function(predicate) {
  1233. if (this == null) {
  1234. throw new TypeError('Array.prototype.find called on null or undefined');
  1235. }
  1236. if (typeof predicate !== 'function') {
  1237. throw new TypeError('predicate must be a function');
  1238. }
  1239. var list = Object(this);
  1240. var length = list.length>>>0;
  1241. var thisArg = arguments[1];
  1242. var value;
  1243. for (var i = 0; i < length; i++) {
  1244. value = list[i];
  1245. if (predicate.call(thisArg, value, i, list)) {
  1246. return value;
  1247. }
  1248. }
  1249. return undefined;
  1250. };
  1251. }
  1252. if (!Array.prototype.findIndex) {
  1253. Array.prototype.findIndex = function(predicate) {
  1254. if (this == null) {
  1255. throw new TypeError('Array.prototype.find called on null or undefined');
  1256. }
  1257. if (typeof predicate !== 'function') {
  1258. throw new TypeError('predicate must be a function');
  1259. }
  1260. var list = Object(this);
  1261. var length = list.length>>>0;
  1262. var thisArg = arguments[1];
  1263. var value;
  1264. for (var i = 0; i < length; i++) {
  1265. value = list[i];
  1266. if (predicate.call(thisArg, value, i, list)) {
  1267. return i;
  1268. }
  1269. }
  1270. return - 1;
  1271. };
  1272. }
  1273. if (!Array.prototype.forEach) {
  1274. Array.prototype.forEach = function(callback, thisArg) {
  1275. var T, k;
  1276. if (this == null) {
  1277. throw new TypeError(' this is null or not defined');
  1278. }
  1279. var O = Object(this);
  1280. var len = O.length>>>0;
  1281. if (typeof callback !== "function") {
  1282. throw new TypeError(callback + ' is not a function');
  1283. }
  1284. if (arguments.length > 1) {
  1285. T = thisArg;
  1286. }
  1287. k = 0;
  1288. while (k < len) {
  1289. var kValue;
  1290. if (k in O) {
  1291. kValue = O[k];
  1292. callback.call(T, kValue, k, O);
  1293. }
  1294. k++;
  1295. }
  1296. };
  1297. }
  1298. if (!Array.prototype.every) {
  1299. Array.prototype.every = function(callbackfn, thisArg) {
  1300. 'use strict';
  1301. var T, k;
  1302. if (this == null) {
  1303. throw new TypeError('this is null or not defined');
  1304. }
  1305. var O = Object(this);
  1306. var len = O.length>>>0;
  1307. if (typeof callbackfn !== 'function') {
  1308. throw new TypeError();
  1309. }
  1310. if (arguments.length > 1) {
  1311. T = thisArg;
  1312. }
  1313. k = 0;
  1314. while (k < len) {
  1315. var kValue;
  1316. if (k in O) {
  1317. kValue = O[k];
  1318. var testResult = callbackfn.call(T, kValue, k, O);
  1319. if (!testResult) {
  1320. return false;
  1321. }
  1322. }
  1323. k++;
  1324. }
  1325. return true;
  1326. };
  1327. }
  1328. if (!Array.prototype.some) {
  1329. Array.prototype.some = function(fun) {
  1330. 'use strict';
  1331. if (this == null) {
  1332. throw new TypeError('Array.prototype.some called on null or undefined');
  1333. }
  1334. if (typeof fun !== 'function') {
  1335. throw new TypeError();
  1336. }
  1337. var t = Object(this);
  1338. var len = t.length>>>0;
  1339. var thisArg = arguments.length >= 2 ? arguments[1]: void 0;
  1340. for (var i = 0; i < len; i++) {
  1341. if (i in t && fun.call(thisArg, t[i], i, t)) {
  1342. return true;
  1343. }
  1344. }
  1345. return false;
  1346. };
  1347. }
  1348. function trace() {
  1349. if (!LGlobal.traceDebug)
  1350. return;
  1351. var t = document.getElementById("traceObject"), i;
  1352. if (trace.arguments.length > 0 && t == null) {
  1353. t = document.createElement("TEXTAREA");
  1354. t.id = "traceObject";
  1355. t.style.position = "absolute";
  1356. t.style.top = (LGlobal.height + 20) + "px";
  1357. t.style.width = LGlobal.width + "px";
  1358. t.style.height = "200px";
  1359. document.body.appendChild(t);
  1360. }
  1361. for (i = 0; i < trace.arguments.length; i++) {
  1362. t.value = t.value + trace.arguments[i] + "\r\n";
  1363. t.scrollTop = t.scrollHeight;
  1364. }
  1365. }
  1366. if (!window.console) {
  1367. window.console = {
  1368. log: trace,
  1369. warn: trace
  1370. };
  1371. }
  1372. function addChild(o) {
  1373. LGlobal.stage.addChild(o);
  1374. }
  1375. function removeChild(o) {
  1376. LGlobal.stage.removeChild(o);
  1377. }
  1378. function init(s, c, w, h, f, t) {
  1379. LGlobal.speed = s;
  1380. var _f = function() {
  1381. if (LGlobal.canTouch && LGlobal.aspectRatio == LANDSCAPE && window.innerWidth < window.innerHeight) {
  1382. LGlobal.horizontalError();
  1383. } else if (LGlobal.canTouch && LGlobal.aspectRatio == PORTRAIT && window.innerWidth > window.innerHeight) {
  1384. LGlobal.verticalError();
  1385. } else {
  1386. setTimeout(f, 100);
  1387. }
  1388. LGlobal.startTimer = (new Date()).getTime();
  1389. };
  1390. if (t != null && t == LEvent.INIT) {
  1391. LGlobal.frameRate = setInterval(function() {
  1392. LGlobal.onShow();
  1393. }, s);
  1394. LGlobal.setCanvas(c, w, h);
  1395. _f();
  1396. } else {
  1397. LEvent.addEventListener(window, "load", function() {
  1398. LGlobal.frameRate = setInterval(function() {
  1399. LGlobal.onShow();
  1400. }, s);
  1401. LGlobal.setCanvas(c, w, h);
  1402. _f();
  1403. });
  1404. }
  1405. }
  1406. var LInit = init;
  1407. function base(d, b, a) {
  1408. var p = null, o = d.constructor.prototype, h = {};
  1409. if (d.constructor.name == "Object") {
  1410. console.warn("When you use the extends. You must make a method like 'XX.prototype.xxx=function(){}'. but not 'XX.prototype={xxx:function(){}}'.");
  1411. }
  1412. if (typeof d.__ll__parent__ == UNDEFINED) {
  1413. d.__ll__parent__ = [];
  1414. d.__ll__parent__ = [];
  1415. }
  1416. d.__ll__parent__.push(b.prototype);
  1417. for (p in o) {
  1418. h[p] = 1;
  1419. }
  1420. for (p in b.prototype) {
  1421. if (!h[p]) {
  1422. o[p] = b.prototype[p];
  1423. }
  1424. }
  1425. if (o.toString == Object.prototype.toString) {
  1426. o.toString = LObject.prototype.toString;
  1427. }
  1428. b.apply(d, a);
  1429. }
  1430. var LExtends = base;
  1431. function getTimer() {
  1432. return (new Date()).getTime() - LGlobal.startTimer;
  1433. }
  1434. function getExtension(path) {
  1435. var r, pattern = /([^#?]+\.)([^.#?]+)/;
  1436. r = path.match(pattern);
  1437. if (r.length >= 3) {
  1438. return r[2].toLowerCase();
  1439. }
  1440. return null;
  1441. }
  1442. var LObject = (function() {
  1443. function LObject() {
  1444. this.type = "LObject";
  1445. this.objectIndex=++LGlobal.objectIndex;
  1446. this.objectindex = this.objectIndex;
  1447. }
  1448. LObject.prototype = {
  1449. callParent: function(f_n, args) {
  1450. if (!f_n ||!args) {
  1451. return;
  1452. }
  1453. var s = this, init = false, r, k = "__ll__parent_call" + f_n;
  1454. if (typeof s[k] == "undefined") {
  1455. init = true;
  1456. s[k] = 0;
  1457. } else {
  1458. s[k]++;
  1459. }
  1460. if (s[k] >= s.__ll__parent__.length) {
  1461. return false;
  1462. }
  1463. if (!s.__ll__parent__[s[k]][f_n]) {
  1464. r = s.callParent(f_n, args);
  1465. } else {
  1466. r = s.__ll__parent__[s[k]][f_n].apply(s, args);
  1467. }
  1468. if (init) {
  1469. delete s[k];
  1470. }
  1471. return r;
  1472. },
  1473. toString: function() {
  1474. return "[object " + this.constructor.name + "]";
  1475. }
  1476. };
  1477. return LObject;
  1478. })();
  1479. var LColorTransform = (function() {
  1480. function LColorTransform(redMultiplier, greenMultiplier, blueMultiplier, alphaMultiplier, redOffset, greenOffset, blueOffset, alphaOffset) {
  1481. var s = this;
  1482. LExtends(s, LObject, []);
  1483. s.redMultiplier = redMultiplier;
  1484. s.greenMultiplier = greenMultiplier;
  1485. s.blueMultiplier = blueMultiplier;
  1486. s.alphaMultiplier = alphaMultiplier;
  1487. s.redOffset = redOffset;
  1488. s.greenOffset = greenOffset;
  1489. s.blueOffset = blueOffset;
  1490. s.alphaOffset = alphaOffset;
  1491. }
  1492. return LColorTransform;
  1493. })();
  1494. var LTransform = (function() {
  1495. function LTransform() {
  1496. var s = this;
  1497. LExtends(s, LObject, []);
  1498. s.matrix = null;
  1499. }
  1500. return LTransform;
  1501. })();
  1502. var LMatrix = (function() {
  1503. function LMatrix(a, b, c, d, tx, ty, u, v, w) {
  1504. var s = this;
  1505. LExtends(s, LObject, []);
  1506. s.a = 1;
  1507. s.b = 0;
  1508. s.u = 0;
  1509. s.c = 0;
  1510. s.d = 1;
  1511. s.v = 0;
  1512. s.tx = 0;
  1513. s.ty = 0;
  1514. s.w = 1;
  1515. if (typeof a != UNDEFINED) {
  1516. s.a = a;
  1517. }
  1518. if (typeof b != UNDEFINED) {
  1519. s.b = b;
  1520. }
  1521. if (typeof c != UNDEFINED) {
  1522. s.c = c;
  1523. }
  1524. if (typeof d != UNDEFINED) {
  1525. s.d = d;
  1526. }
  1527. if (typeof tx != UNDEFINED) {
  1528. s.tx = tx;
  1529. }
  1530. if (typeof ty != UNDEFINED) {
  1531. s.ty = ty;
  1532. }
  1533. if (typeof u != UNDEFINED) {
  1534. s.u = u;
  1535. }
  1536. if (typeof v != UNDEFINED) {
  1537. s.v = v;
  1538. }
  1539. if (typeof w != UNDEFINED) {
  1540. s.w = w;
  1541. }
  1542. }
  1543. var p = {
  1544. setTo: function(a, b, c, d, tx, ty, u, v, w) {
  1545. var s = this;
  1546. if (typeof a != UNDEFINED) {
  1547. s.a = a;
  1548. }
  1549. if (typeof b != UNDEFINED) {
  1550. s.b = b;
  1551. }
  1552. if (typeof c != UNDEFINED) {
  1553. s.c = c;
  1554. }
  1555. if (typeof d != UNDEFINED) {
  1556. s.d = d;
  1557. }
  1558. if (typeof tx != UNDEFINED) {
  1559. s.tx = tx;
  1560. }
  1561. if (typeof ty != UNDEFINED) {
  1562. s.ty = ty;
  1563. }
  1564. if (typeof u != UNDEFINED) {
  1565. s.u = u;
  1566. }
  1567. if (typeof v != UNDEFINED) {
  1568. s.v = v;
  1569. }
  1570. if (typeof w != UNDEFINED) {
  1571. s.w = w;
  1572. }
  1573. return s;
  1574. },
  1575. isIdentity: function() {
  1576. var s = this;
  1577. return (s.a == 1 && s.b == 0 && s.c == 0 && s.d == 1 && s.tx == 0 && s.ty == 0 && u == 0 && v == 0 && w == 1);
  1578. },
  1579. transform: function(c) {
  1580. var s = this;
  1581. c.transform(s.a, s.b, s.c, s.d, s.tx, s.ty);
  1582. return s;
  1583. },
  1584. identity: function() {
  1585. this.setTo(1, 0, 0, 1, 0, 0, 0, 0, 1);
  1586. },
  1587. rotate: function(q) {
  1588. var s = this, radian = q * Math.PI / 180, cos = Math.cos(radian), sin = Math.sin(radian), mtx = new LMatrix(cos, sin, - sin, cos, 0, 0, 0, 0, 1);
  1589. s.add(mtx);
  1590. return s;
  1591. },
  1592. scale: function(sx, sy) {
  1593. var s = this, mtx = new LMatrix(sx, 0, 0, sy, 0, 0, 0, 0, 1);
  1594. s.add(mtx);
  1595. return s;
  1596. },
  1597. translate: function(tx, ty) {
  1598. var s = this, mtx = new LMatrix(1, 0, 0, 1, tx, ty, 0, 0, 1);
  1599. s.add(mtx);
  1600. return s;
  1601. },
  1602. skew: function(kx, ky) {
  1603. var s = this, mtx = new LMatrix(1, ky, kx, 1, 0, 0, 0, 0, 1);
  1604. s.add(mtx);
  1605. return s;
  1606. },
  1607. add: function(mtx) {
  1608. var s = this, a, b, c, d, tx, ty, u, v, w;
  1609. a = s.a * mtx.a + s.b * mtx.c + s.u * mtx.tx;
  1610. b = s.a * mtx.b + s.b * mtx.d + s.u * mtx.ty;
  1611. u = s.a * mtx.u + s.b * mtx.v + s.u * mtx.w;
  1612. c = s.c * mtx.a + s.d * mtx.c + s.v * mtx.tx;
  1613. d = s.c * mtx.b + s.d * mtx.d + s.v * mtx.ty;
  1614. v = s.c * mtx.u + s.d * mtx.v + s.v * mtx.w;
  1615. tx = s.tx * mtx.a + s.ty * mtx.c + s.w * mtx.tx;
  1616. ty = s.tx * mtx.b + s.ty * mtx.d + s.w * mtx.ty;
  1617. w = s.tx * mtx.u + s.ty * mtx.v + s.w * mtx.w;
  1618. s.setTo(a, b, c, d, tx, ty, u, v, w);
  1619. },
  1620. toArray: function(mtx) {
  1621. var s = this;
  1622. if (Array.isArray(mtx) && mtx.length == 3) {
  1623. var m = mtx[0] * s.a + mtx[1] * s.c + mtx[2] * s.tx, n = mtx[0] * s.b + mtx[1] * s.d + mtx[2] * s.ty, k = mtx[0] * s.u + mtx[1] * s.v + mtx[2] * s.w;
  1624. return [m, n, k];
  1625. } else {
  1626. var a = s.a * mtx.a + s.b * mtx.c + s.u * mtx.tx, b = s.a * mtx.b + s.b * mtx.d + s.u * mtx.ty, u = s.a * mtx.u + s.b * mtx.v + s.u * mtx.w, c = s.c * mtx.a + s.d * mtx.c + s.v * mtx.tx, d = s.c * mtx.b + s.d * mtx.d + s.v * mtx.ty, v = s.c * mtx.u + s.d * mtx.v + s.v * mtx.w, tx = s.tx * mtx.a + s.ty * mtx.c + s.w * mtx.tx, ty = s.tx * mtx.b + s.ty * mtx.d + s.w * mtx.ty, w = s.tx * mtx.u + s.ty * mtx.v + s.w * mtx.w;
  1627. return [a, b, c, d, tx, ty, u, v, w];
  1628. }
  1629. },
  1630. clone: function() {
  1631. var s = this;
  1632. return new LMatrix(s.a, s.b, s.c, s.d, s.tx, s.ty, s.u, s.v, s.w);
  1633. }
  1634. };
  1635. for (var k in p) {
  1636. LMatrix.prototype[k] = p[k];
  1637. }
  1638. return LMatrix;
  1639. })();
  1640. var LVec2 = (function() {
  1641. function LVec2(x, y) {
  1642. this.x = x || 0;
  1643. this.y = y || 0;
  1644. }
  1645. LVec2.dot = function(a, b) {
  1646. return a.x * b.x + a.y * b.y;
  1647. };
  1648. LVec2.cross = function(a, b) {
  1649. return a.x * b.y - a.y * b.x;
  1650. };
  1651. LVec2.distance = function(a, b) {
  1652. var x = a.x - b.x;
  1653. var y = a.y - b.y;
  1654. return Math.sqrt(x * x + y * y);
  1655. };
  1656. LVec2.getMinMax = function(vecs, axis) {
  1657. var min_o = LVec2.dot(vecs[0], axis);
  1658. var max_o = LVec2.dot(vecs[0], axis);
  1659. var min_i = 0;
  1660. var max_i = 0;
  1661. for (var i = 1; i < vecs.length; i++) {
  1662. var this_o = LVec2.dot(vecs[i], axis);
  1663. if (min_o > this_o) {
  1664. min_o = this_o;
  1665. min_i = i;
  1666. }
  1667. if (max_o < this_o) {
  1668. max_o = this_o;
  1669. max_i = i;
  1670. }
  1671. }
  1672. var r = {
  1673. "min_o": min_o,
  1674. "min_i": min_i,
  1675. "max_o": max_o,
  1676. "max_i": max_i
  1677. };
  1678. return r;
  1679. };
  1680. LVec2.prototype = {
  1681. length: function() {
  1682. var s = this;
  1683. return Math.sqrt(s.x * s.x + s.y * s.y);
  1684. },
  1685. normalize: function() {
  1686. var s = this, l = s.length();
  1687. return new LVec2(s.x / l, s.y / l);
  1688. },
  1689. normR: function() {
  1690. return new LVec2( - this.y, this.x);
  1691. },
  1692. normL: function() {
  1693. return new LVec2(this.y, - this.x);
  1694. }
  1695. };
  1696. return LVec2;
  1697. })();
  1698. var LEventDispatcher = (function() {
  1699. function LEventDispatcher() {
  1700. var s = this;
  1701. LExtends(s, LObject, []);
  1702. s._eventList = new Array();
  1703. }
  1704. var p = {
  1705. addEventListener: function(type, listener) {
  1706. this._eventList.push({
  1707. listener: listener,
  1708. type: type
  1709. });
  1710. },
  1711. removeEventListener: function(type, listener) {
  1712. var s = this, i, length;
  1713. length = s._eventList.length;
  1714. for (i = 0; i < length; i++) {
  1715. if (!s._eventList[i]) {
  1716. continue;
  1717. }
  1718. if (type == s._eventList[i].type && s._eventList[i].listener == listener) {
  1719. s._eventList.splice(i, 1);
  1720. return;
  1721. }
  1722. }
  1723. },
  1724. removeAllEventListener: function() {
  1725. this._eventList = [];
  1726. },
  1727. dispatchEvent: function(event) {
  1728. var s = this, i, length = s._eventList.length, ctype = (typeof event == "string") ? event: event.eventType;
  1729. for (i = 0; i < length; i++) {
  1730. if (!s._eventList[i]) {
  1731. continue;
  1732. }
  1733. if (ctype == s._eventList[i].type) {
  1734. if (typeof event == "string") {
  1735. s.currentTarget = s.target = s;
  1736. s.eventType = s.event_type = ctype;
  1737. s._eventList[i].listener(s);
  1738. delete s.currentTarget;
  1739. delete s.target;
  1740. delete s.eventType;
  1741. } else {
  1742. if (!event.target) {
  1743. event.target = s;
  1744. }
  1745. if (!event.currentTarget) {
  1746. event.currentTarget = event.target;
  1747. }
  1748. event._ll_preventDefault = false;
  1749. s._eventList[i].listener(event);
  1750. if (event._ll_preventDefault) {
  1751. return false;
  1752. }
  1753. }
  1754. return true;
  1755. }
  1756. }
  1757. return false;
  1758. },
  1759. hasEventListener: function(type, listener) {
  1760. var s = this, i, length = s._eventList.length;
  1761. for (i = 0; i < length; i++) {
  1762. if (!s._eventList[i]) {
  1763. continue;
  1764. }
  1765. if (type == s._eventList[i].type) {
  1766. if (typeof listener == UNDEFINED || listener == s._eventList[i].listener) {
  1767. return true;
  1768. }
  1769. }
  1770. }
  1771. return false;
  1772. }
  1773. };
  1774. for (var k in p) {
  1775. LEventDispatcher.prototype[k] = p[k];
  1776. }
  1777. return LEventDispatcher;
  1778. })();
  1779. var LDisplayObject = (function() {
  1780. function LDisplayObject() {
  1781. var s = this;
  1782. LExtends(s, LEventDispatcher, []);
  1783. s.name = "instance" + s.objectIndex;
  1784. s.x = 0;
  1785. s.y = 0;
  1786. s.width = 0;
  1787. s.height = 0;
  1788. s.scaleX = 1;
  1789. s.scaleY = 1;
  1790. s.alpha = 1;
  1791. s.visible = true;
  1792. s.rotate = 0;
  1793. s.mask = null;
  1794. s.blendMode = null;
  1795. s.filters = null;
  1796. s.transform = new LTransform();
  1797. }
  1798. var p = {
  1799. _createCanvas: function() {
  1800. var s = this;
  1801. if (!s._canvas) {
  1802. s._canvas = document.createElement("canvas");
  1803. s._context = s._canvas.getContext("2d");
  1804. }
  1805. },
  1806. ll_show: function() {
  1807. var s = this, c = LGlobal.canvas;
  1808. if (!s._canShow()) {
  1809. return;
  1810. }
  1811. s._ll_trans = false;
  1812. if (!LGlobal.box2d && typeof s._ll_loopframe == "function") {
  1813. s._ll_loopframe();
  1814. }
  1815. c.save();
  1816. s._showReady(c);
  1817. if (s.blendMode) {
  1818. c.globalCompositeOperation = s.blendMode;
  1819. }
  1820. if (s.filters) {
  1821. s._ll_setShadow();
  1822. }
  1823. s._rotateReady();
  1824. if (s.mask != null && s.mask.ll_show) {
  1825. s.mask.ll_show();
  1826. c.clip();
  1827. }
  1828. s._transformRotate();
  1829. s._transformScale();
  1830. s._coordinate(c);
  1831. if (s.transform.matrix) {
  1832. s.transform.matrix.transform(c);
  1833. }
  1834. if (s.alpha < 1) {
  1835. s._ll_trans = true;
  1836. c.globalAlpha = s.alpha;
  1837. }
  1838. if (LGlobal.fpsStatus) {
  1839. LGlobal.fpsStatus.display++;
  1840. if (s._ll_trans) {
  1841. LGlobal.fpsStatus.transform++;
  1842. }
  1843. }
  1844. s._ll_show(c);
  1845. c.restore();
  1846. if (LGlobal.box2d != null && typeof s._ll_loopframe == "function") {
  1847. s._ll_loopframe();
  1848. }
  1849. },
  1850. _canShow: function() {
  1851. return this.visible;
  1852. },
  1853. _coordinate: function(c) {
  1854. var s = this;
  1855. if (s.x != 0 || s.y != 0) {
  1856. s._ll_trans = true;
  1857. c.transform(1, 0, 0, 1, s.x, s.y);
  1858. }
  1859. },
  1860. _rotateReady: function() {},
  1861. _showReady: function(c) {},
  1862. _ll_show: function(c) {},
  1863. _ll_setShadow: function() {
  1864. var s = this, f = s.filters, i, l;
  1865. if (!f) {
  1866. return;
  1867. }
  1868. for (i = 0, l = f.length; i < l; i++) {
  1869. f[i].ll_show();
  1870. }
  1871. },
  1872. _transformRotate: function() {
  1873. var s = this, c;
  1874. if (s.rotate == 0) {
  1875. return;
  1876. }
  1877. s._ll_trans = true;
  1878. c = LGlobal.canvas, rotateFlag = Math.PI / 180, rotateObj = new LMatrix();
  1879. if ((typeof s.rotatex) == UNDEFINED) {
  1880. s.rotatex = 0;
  1881. s.rotatey = 0;
  1882. }
  1883. if (s.box2dBody) {
  1884. rotateFlag = 1;
  1885. }
  1886. rotateObj.a = Math.cos(s.rotate * rotateFlag);
  1887. rotateObj.b = Math.sin(s.rotate * rotateFlag);
  1888. rotateObj.c =- rotateObj.b;
  1889. rotateObj.d = rotateObj.a;
  1890. rotateObj.tx = s.x + s.rotatex;
  1891. rotateObj.ty = s.y + s.rotatey;
  1892. rotateObj.transform(c).setTo(1, 0, 0, 1, - rotateObj.tx, - rotateObj.ty).transform(c);
  1893. },
  1894. _transformScale: function() {
  1895. var s = this, c = LGlobal.canvas, scaleObj;
  1896. if (s.scaleX == 1 && s.scaleY == 1) {
  1897. return;
  1898. }
  1899. s._ll_trans = true;
  1900. scaleObj = new LMatrix();
  1901. if (s.scaleX != 1) {
  1902. scaleObj.tx = s.x;
  1903. }
  1904. if (s.scaleY != 1) {
  1905. scaleObj.ty = s.y;
  1906. }
  1907. scaleObj.a = s.scaleX;
  1908. scaleObj.d = s.scaleY;
  1909. scaleObj.transform(c).setTo(1, 0, 0, 1, - scaleObj.tx, - scaleObj.ty).transform(c);
  1910. },
  1911. copyProperty: function(a) {
  1912. var s = this, k;
  1913. for (k in a) {
  1914. if (typeof a[k] == "number" || typeof a[k] == "string" || typeof a[k] == "boolean") {
  1915. if (k == "objectindex" || k == "objectIndex") {
  1916. continue;
  1917. }
  1918. s[k] = a[k];
  1919. } else if (Array.isArray(a[k])) {
  1920. s[k] = a[k].slice();
  1921. }
  1922. }
  1923. if (a.mask) {
  1924. s.mask = a.mask.clone();
  1925. }
  1926. },
  1927. getAbsoluteScale: function() {
  1928. var s = this, sX, sY, p;
  1929. sX = s.scaleX;
  1930. sY = s.scaleY;
  1931. p = s.parent;
  1932. while (p && p != "root") {
  1933. sX*=p.scaleX;
  1934. sY*=p.scaleY;
  1935. p = p.parent;
  1936. }
  1937. return {
  1938. scaleX: sX,
  1939. scaleY: sY
  1940. };
  1941. },
  1942. getRootCoordinate: function() {
  1943. var s = this, sx, sy, p;
  1944. sx = s.x;
  1945. sy = s.y;
  1946. p = s.parent;
  1947. while (p && p != "root") {
  1948. sx*=p.scaleX;
  1949. sy*=p.scaleY;
  1950. sx += p.x;
  1951. sy += p.y;
  1952. p = p.parent;
  1953. }
  1954. return new LPoint(sx, sy);
  1955. },
  1956. getBounds: function(d) {
  1957. if (typeof d == UNDEFINED) {
  1958. return new LRectangle(0, 0, 0, 0);
  1959. }
  1960. var s = this, x = 0, y = 0, w = 0, h = 0, sp, dp;
  1961. if (s.objectIndex != d.objectIndex) {
  1962. sp = s.getRootCoordinate();
  1963. dp = d.getRootCoordinate();
  1964. x = sp.x - dp.x;
  1965. y = sp.y - dp.y;
  1966. }
  1967. if (d.getWidth) {
  1968. w = d.getWidth();
  1969. }
  1970. if (d.getHeight) {
  1971. h = d.getHeight();
  1972. }
  1973. return new LRectangle(x, y, w, h);
  1974. },
  1975. getDataCanvas: function() {
  1976. var s = this, _o, o, _c, c, _x, _y;
  1977. s._createCanvas();
  1978. o = LGlobal.canvasObj;
  1979. c = LGlobal.canvas;
  1980. _o = s._canvas;
  1981. _c = s._context;
  1982. s.width = s.getWidth();
  1983. s.height = s.getHeight();
  1984. _o.width = s.width;
  1985. _o.height = s.height;
  1986. _c.clearRect(0, 0, s.width, s.height);
  1987. LGlobal.canvasObj = s._canvas;
  1988. LGlobal.canvas = s._context;
  1989. _x = s.x;
  1990. _y = s.y;
  1991. s.x = s.y = 0;
  1992. s.ll_show();
  1993. s.x = _x;
  1994. s.y = _y;
  1995. s._canvas = _o;
  1996. s._context = _c;
  1997. LGlobal.canvasObj = o;
  1998. LGlobal.canvas = c;
  1999. return s._canvas;
  2000. },
  2001. getDataURL: function() {
  2002. var s = this, r = s.getDataCanvas();
  2003. return r.toDataURL.apply(r, arguments);
  2004. },
  2005. ismouseonShapes: function(shapes, mx, my) {
  2006. var s = this, parent = s, m, child, j, v, arg;
  2007. if (typeof shapes == UNDEFINED) {
  2008. shapes = s.shapes;
  2009. }
  2010. m = s.getRootMatrix();
  2011. for (j = shapes.length - 1; j >= 0; j--) {
  2012. child = shapes[j];
  2013. arg = child.arg;
  2014. v = s._changeShape(child.type, arg, m);
  2015. if (child.type == LShape.VERTICES) {
  2016. if (LGlobal.hitPolygon(v, mx, my)) {
  2017. return true;
  2018. }
  2019. } else if (child.type == LShape.RECT) {
  2020. if (LGlobal.hitPolygon(v, mx, my)) {
  2021. return true;
  2022. }
  2023. } else if (child.type == LShape.ARC) {
  2024. if ((v[0] - mx) * (v[0] - mx) + (v[1] - my) * (v[1] - my) < v[3]) {
  2025. return true;
  2026. }
  2027. }
  2028. }
  2029. return false;
  2030. },
  2031. _changeShape: function(type, arg, m) {
  2032. var v, arg = arg, r2, i, l, v1, v2;
  2033. if (type == LShape.VERTICES) {
  2034. v = [];
  2035. for (i = 0, l = arg.length; i < l; i++) {
  2036. v[i] = m.toArray([arg[i][0], arg[i][1], 1]);
  2037. }
  2038. } else if (type == LShape.RECT) {
  2039. v = [[arg[0], arg[1]], [arg[0] + arg[2], arg[1]], [arg[0] + arg[2], arg[1] + arg[3]], [arg[0], arg[1] + arg[3]]];
  2040. for (i = 0, l = v.length; i < l; i++) {
  2041. v[i] = m.toArray([v[i][0], v[i][1], 1]);
  2042. }
  2043. } else if (type == LShape.ARC) {
  2044. v1 = m.toArray([arg[0], arg[1], 1]);
  2045. v2 = m.toArray([arg[0] + arg[2], arg[1], 1]);
  2046. r2 = (v1[0] - v2[0]) * (v1[0] - v2[0]) + (v1[1] - v2[1]) * (v1[1] - v2[1]);
  2047. v = [v1[0], v1[1], Math.sqrt(r2), r2];
  2048. }
  2049. return v;
  2050. },
  2051. getRootMatrix: function() {
  2052. var parent = this, m = new LMatrix();
  2053. while (parent && parent != "root") {
  2054. if (parent.scaleX != 1 || parent.scaleY != 1) {
  2055. m.scale(parent.scaleX, parent.scaleY);
  2056. }
  2057. if (parent.rotate != 0) {
  2058. m.rotate(parent.rotate);
  2059. }
  2060. if (parent.x != 0 || parent.y != 0) {
  2061. m.translate(parent.x, parent.y);
  2062. }
  2063. parent = parent.parent;
  2064. }
  2065. return m;
  2066. },
  2067. remove: function() {
  2068. var s = this, p = s.parent;
  2069. if (!p || p == "root") {
  2070. return;
  2071. }
  2072. p.removeChild(s);
  2073. s._ll_removeFromSelf = true;
  2074. }
  2075. };
  2076. for (var k in p) {
  2077. LDisplayObject.prototype[k] = p[k];
  2078. }
  2079. return LDisplayObject;
  2080. })();
  2081. var LInteractiveObject = (function() {
  2082. function LInteractiveObject() {
  2083. var s = this;
  2084. LExtends(s, LDisplayObject, []);
  2085. s.type = "LInteractiveObject";
  2086. s.mouseEnabled = true;
  2087. s.mouseList = new Array();
  2088. }
  2089. var p = {
  2090. addEventListener: function(type, listener) {
  2091. var s = this;
  2092. if (type.indexOf("mouse") >= 0 || type.indexOf("touch") >= 0 || type == LMouseEvent.DOUBLE_CLICK) {
  2093. if (LMouseEventContainer.container[type] || ((type == LMouseEvent.MOUSE_OVER || type == LMouseEvent.MOUSE_OUT) && LMouseEventContainer.container[LMouseEvent.MOUSE_MOVE])) {
  2094. LMouseEventContainer.addMouseEvent(s, type, listener);
  2095. return;
  2096. }
  2097. s.mouseList.push({
  2098. listener: listener,
  2099. type: type
  2100. });
  2101. } else {
  2102. s._eventList.push({
  2103. listener: listener,
  2104. type: type
  2105. });
  2106. }
  2107. },
  2108. removeEventListener: function(type, listener) {
  2109. var s = this, i, length;
  2110. if (type.indexOf("mouse") >= 0 || type.indexOf("touch") >= 0 || type == LMouseEvent.DOUBLE_CLICK) {
  2111. if (LMouseEventContainer.container[type] || ((type == LMouseEvent.MOUSE_OVER || type == LMouseEvent.MOUSE_OUT) && LMouseEventContainer.container[LMouseEvent.MOUSE_MOVE])) {
  2112. LMouseEventContainer.removeMouseEvent(s, type, listener);
  2113. return;
  2114. }
  2115. length = s.mouseList.length;
  2116. for (i = 0; i < length; i++) {
  2117. if (!s.mouseList[i]) {
  2118. continue;
  2119. }
  2120. if (type == s.mouseList[i].type && s.mouseList[i].listener == listener) {
  2121. s.mouseList.splice(i, 1);
  2122. return;
  2123. }
  2124. }
  2125. } else {
  2126. return s.callParent("removeEventListener", arguments);
  2127. }
  2128. },
  2129. removeAllEventListener: function() {
  2130. var s = this;
  2131. s.mouseList.length = 0;
  2132. s._eventList.length = 0;
  2133. if (LMouseEventContainer.container[LMouseEvent.MOUSE_DOWN]) {
  2134. LMouseEventContainer.removeMouseEvent(s, LMouseEvent.MOUSE_DOWN);
  2135. }
  2136. if (LMouseEventContainer.container[LMouseEvent.MOUSE_UP]) {
  2137. LMouseEventContainer.removeMouseEvent(s, LMouseEvent.MOUSE_UP);
  2138. }
  2139. if (LMouseEventContainer.container[LMouseEvent.MOUSE_MOVE]) {
  2140. LMouseEventContainer.removeMouseEvent(s, LMouseEvent.MOUSE_MOVE);
  2141. LMouseEventContainer.removeMouseEvent(s, LMouseEvent.MOUSE_OVER);
  2142. LMouseEventContainer.removeMouseEvent(s, LMouseEvent.MOUSE_OUT);
  2143. }
  2144. },
  2145. hasEventListener: function(type) {
  2146. var s = this, i, length;
  2147. if (type.indexOf("mouse") >= 0 || type.indexOf("touch") >= 0 || type == LMouseEvent.DOUBLE_CLICK) {
  2148. length = s.mouseList.length;
  2149. for (i = 0; i < length; i++) {
  2150. if (!s.mouseList[i]) {
  2151. continue;
  2152. }
  2153. if (type == s.mouseList[i].type) {
  2154. return true;
  2155. }
  2156. }
  2157. } else {
  2158. return s.callParent("hasEventListener", arguments);
  2159. }
  2160. return false;
  2161. }
  2162. };
  2163. for (var k in p) {
  2164. LInteractiveObject.prototype[k] = p[k];
  2165. }
  2166. return LInteractiveObject;
  2167. })();
  2168. var LDisplayObjectContainer = (function() {
  2169. function LDisplayObjectContainer() {
  2170. var s = this;
  2171. LExtends(s, LInteractiveObject, []);
  2172. s.childList = new Array();
  2173. s.numChildren = 0;
  2174. s.mouseChildren = true;
  2175. }
  2176. var p = {
  2177. addChild: function(d) {
  2178. var s = this, t;
  2179. if (d.parent) {
  2180. t = LGlobal.destroy;
  2181. LGlobal.destroy = false;
  2182. d.parent.removeChild(d);
  2183. LGlobal.destroy = t;
  2184. }
  2185. d.parent = s;
  2186. s.childList.push(d);
  2187. s.numChildren = s.childList.length;
  2188. s._ll_removeFromSelf = false;
  2189. return d;
  2190. },
  2191. addChildAt: function(d, i) {
  2192. var s = this, t;
  2193. if (i < 0 || i > s.childList.length) {
  2194. return;
  2195. }
  2196. if (typeof d.remove == "function") {
  2197. t = LGlobal.destroy;
  2198. LGlobal.destroy = false;
  2199. d.remove();
  2200. LGlobal.destroy = t;
  2201. }
  2202. d.parent = s;
  2203. s.childList.splice(i, 0, d);
  2204. s.numChildren = s.childList.length;
  2205. s._ll_removeFromSelf = false;
  2206. return d;
  2207. },
  2208. removeChild: function(d) {
  2209. var s = this, c = s.childList, i, l;
  2210. for (i = 0, l = c.length; i < l; i++) {
  2211. if (d.objectIndex == c[i].objectIndex) {
  2212. if (LGlobal.destroy && d.die) {
  2213. d.die();
  2214. }
  2215. s.childList.splice(i, 1);
  2216. break;
  2217. }
  2218. }
  2219. s.numChildren = s.childList.length;
  2220. delete d.parent;
  2221. },
  2222. getChildAt: function(i) {
  2223. var s = this, c = s.childList;
  2224. if (c.length == 0 || c.length <= i) {
  2225. return null;
  2226. }
  2227. return c[i];
  2228. },
  2229. getChildByName: function(n) {
  2230. var s = this, c = s.childList;
  2231. for (i = 0, l = c.length; i < l; i++) {
  2232. if (!c[i]) {
  2233. continue;
  2234. }
  2235. if (c[i].name == n) {
  2236. return c[i];
  2237. }
  2238. }
  2239. return null;
  2240. },
  2241. removeChildAt: function(i) {
  2242. var s = this, c = s.childList;
  2243. if (c.length <= i) {
  2244. return;
  2245. }
  2246. if (LGlobal.destroy && c[i].die) {
  2247. c[i].die();
  2248. }
  2249. var d = s.childList.splice(i, 1);
  2250. s.numChildren = s.childList.length;
  2251. return d;
  2252. },
  2253. getChildIndex: function(child) {
  2254. if (!child) {
  2255. return - 1;
  2256. }
  2257. var s = this, c = s.childList, i, l = c.length;
  2258. for (i = 0; i < l; i++) {
  2259. if (c[i].objectIndex == child.objectIndex) {
  2260. return i;
  2261. }
  2262. }
  2263. return - 1;
  2264. },
  2265. setChildIndex: function(child, index) {
  2266. var s = this, c = s.childList, i, l = c.length;
  2267. if (child.parent == "root" || child.parent.objectIndex != s.objectIndex || index < 0 || index >= l) {
  2268. return - 1;
  2269. }
  2270. for (i = 0; i < l; i++) {
  2271. if (c[i].objectIndex == child.objectIndex) {
  2272. break;
  2273. }
  2274. }
  2275. s.childList.splice(i, 1);
  2276. s.childList.splice(index, 0, child);
  2277. return index;
  2278. },
  2279. resize: function() {
  2280. var s = this;
  2281. s.width = s.getWidth();
  2282. s.height = s.getHeight();
  2283. },
  2284. removeAllChild: function() {
  2285. var s = this, c = s.childList, i, l;
  2286. for (i = 0, l = c.length; i < l; i++) {
  2287. if (LGlobal.destroy && c[i].die) {
  2288. c[i].die();
  2289. }
  2290. }
  2291. s.childList.length = 0;
  2292. s.width = 0;
  2293. s.height = 0;
  2294. s.numChildren = 0;
  2295. }
  2296. };
  2297. for (var k in p) {
  2298. LDisplayObjectContainer.prototype[k] = p[k];
  2299. }
  2300. return LDisplayObjectContainer;
  2301. })();
  2302. var LLoader = (function() {
  2303. function LLoader() {
  2304. var s = this;
  2305. LExtends(s, LEventDispatcher, []);
  2306. s.type = "LLoader";
  2307. }
  2308. LLoader.TYPE_BITMAPDATE = "bitmapData";
  2309. LLoader.prototype.load = function(u, t) {
  2310. var s = this;
  2311. if (!t) {
  2312. t = LLoader.TYPE_BITMAPDATE;
  2313. }
  2314. s.loadtype = t;
  2315. if (t == LLoader.TYPE_BITMAPDATE) {
  2316. s.content = new Image();
  2317. s.content.onload = function() {
  2318. s.content.onload = null;
  2319. var event = new LEvent(LEvent.COMPLETE);
  2320. event.currentTarget = s;
  2321. event.target = s.content;
  2322. s.dispatchEvent(event);
  2323. delete s.content;
  2324. };
  2325. s.content.src = u;
  2326. }
  2327. };
  2328. return LLoader;
  2329. })();
  2330. var LURLLoader = (function() {
  2331. function LURLLoader() {
  2332. var s = this;
  2333. LExtends(s, LEventDispatcher, []);
  2334. s.type = "LURLLoader";
  2335. s.loadtype = "";
  2336. s.content = null;
  2337. s.event = {};
  2338. }
  2339. LURLLoader.TYPE_TEXT = "text";
  2340. LURLLoader.TYPE_JS = "js";
  2341. LURLLoader.prototype.load = function(u, t) {
  2342. var s = this, event, ext;
  2343. if (!t) {
  2344. ext = getExtension(u);
  2345. if (ext == "txt") {
  2346. t = LURLLoader.TYPE_TEXT;
  2347. } else if (ext == "js") {
  2348. t = LURLLoader.TYPE_JS;
  2349. }
  2350. }
  2351. s.loadtype = t;
  2352. if (t == LURLLoader.TYPE_TEXT) {
  2353. LAjax.get(u, {}, function(data) {
  2354. event = new LEvent(LEvent.COMPLETE);
  2355. s.data = data;
  2356. event.currentTarget = s;
  2357. event.target = data;
  2358. s.dispatchEvent(event);
  2359. delete s.content;
  2360. delete s.data;
  2361. });
  2362. } else if (t == LURLLoader.TYPE_JS) {
  2363. var script = document.createElement("script");
  2364. script.onload = function() {
  2365. event = new LEvent(LEvent.COMPLETE);
  2366. event.currentTarget = s;
  2367. event.target = s;
  2368. s.dispatchEvent(event);
  2369. delete s.content;
  2370. };
  2371. script.src = u;
  2372. script.type = "text/javascript";
  2373. document.querySelector('head').appendChild(script);
  2374. }
  2375. };
  2376. return LURLLoader;
  2377. })();
  2378. var LWebAudio = (function() {
  2379. function LWebAudio() {
  2380. var s = this;
  2381. LExtends(s, LEventDispatcher, []);
  2382. s.currentTime = 0;
  2383. s.currentStart = 0;
  2384. s.currentSave = 0;
  2385. s.length = 0;
  2386. s.loopStart = 0;
  2387. s.loopEnd = 0;
  2388. s.loopIndex = 0;
  2389. s.loopLength = 1;
  2390. s.playing = false;
  2391. s.volume = 1;
  2392. LSound.Container.add(s);
  2393. }
  2394. LWebAudio.container = [];
  2395. LWebAudio.containerCount = 0;
  2396. LWebAudio.audioTag = new Audio();
  2397. LWebAudio._context = null;
  2398. var p = {
  2399. getWebAudio: function() {
  2400. var data;
  2401. if (LWebAudio.containerCount > 0) {
  2402. data = LWebAudio.container.shift();
  2403. } else {
  2404. if (typeof webkitAudioContext !== UNDEFINED) {
  2405. try {
  2406. data = new webkitAudioContext();
  2407. } catch (e) {
  2408. LWebAudio.containerCount = LWebAudio.container.length;
  2409. data = LWebAudio.container.shift();
  2410. }
  2411. } else if (typeof AudioContext !== UNDEFINED) {
  2412. try {
  2413. data = new AudioContext();
  2414. } catch (e) {
  2415. LWebAudio.containerCount = LWebAudio.container.length;
  2416. data = LWebAudio.container.shift();
  2417. }
  2418. } else {
  2419. throw "AudioContext not supported.:(";
  2420. }
  2421. }
  2422. if (!data.createGainNode) {
  2423. data.createGainNode = data.createGain;
  2424. }
  2425. LWebAudio.container.push(data);
  2426. return data;
  2427. },
  2428. onload: function(data) {
  2429. var s = this;
  2430. if (Object.prototype.toString.apply(data) !== '[object AudioBuffer]') {
  2431. s.load(data);
  2432. return;
  2433. };
  2434. if (!s.data) {
  2435. s.data = s.getWebAudio();
  2436. }
  2437. s.buffer = data;
  2438. s.length = s.buffer.duration;
  2439. var e = new LEvent(LEvent.COMPLETE);
  2440. e.currentTarget = s;
  2441. e.target = s.buffer;
  2442. s.dispatchEvent(e);
  2443. },
  2444. _onended: function() {
  2445. var s = this;
  2446. s.dispatchEvent(LEvent.SOUND_COMPLETE);
  2447. s.close();
  2448. if (++s.loopIndex < s.loopLength) {
  2449. s.play(s.currentStart, undefined, s.currentTimeTo);
  2450. }
  2451. },
  2452. load: function(u) {
  2453. var s = this;
  2454. if (typeof u !== "string") {
  2455. if (Object.prototype.toString.apply(u) == '[object AudioBuffer]') {
  2456. s.onload(u);
  2457. } else if (Object.prototype.toString.apply(u) == '[object ArrayBuffer]') {
  2458. if (!s.data) {
  2459. s.data = s.getWebAudio();
  2460. }
  2461. s.data.decodeAudioData(u, s.onload.bind(s), function(error) {
  2462. throw "AudioContext decodeAudioData error:" + error.toString();
  2463. });
  2464. }
  2465. return;
  2466. }
  2467. var a, b, c, k, d, q = {
  2468. "mov": ["quicktime"],
  2469. "3gp": ["3gpp"],
  2470. "midi": ["midi"],
  2471. "mid": ["midi"],
  2472. "ogv": ["ogg"],
  2473. "m4a": ["acc"],
  2474. "mp3": ["mpeg"],
  2475. "wav": ["wav", "x-wav", "wave"],
  2476. "wave": ["wav", "x-wav", "wave"],
  2477. "aac": ["mp4", "aac"]
  2478. };
  2479. a = u.split(',');
  2480. for (k = 0; k < a.length; k++) {
  2481. b = a[k].split('.');
  2482. d = b[b.length - 1];
  2483. if (q[d]) {
  2484. d = q[d];
  2485. } else {
  2486. d = [d];
  2487. }
  2488. c = d.some(function(element, index, array) {
  2489. return LWebAudio.audioTag.canPlayType(s._type + "/" + element);
  2490. });
  2491. if (c) {
  2492. LAjax.responseType = LAjax.ARRAY_BUFFER;
  2493. LAjax.get(a[k], {}, s.onload.bind(s));
  2494. return;
  2495. } else {
  2496. console.warn("Not support " + b[b.length - 1] + ":" + a[k]);
  2497. var e = new LEvent(LEvent.COMPLETE);
  2498. e.currentTarget = e.target = s;
  2499. s.dispatchEvent(e);
  2500. }
  2501. }
  2502. },
  2503. getCurrentTime: function() {
  2504. var s = this;
  2505. if (s.playing) {
  2506. return s.data.currentTime - s.currentSave + s.currentTime;
  2507. } else {
  2508. return s.currentSave;
  2509. }
  2510. },
  2511. setVolume: function(v) {
  2512. var s = this;
  2513. s.volume = v;
  2514. if (s.playing) {
  2515. s.volumeNode.gain.value = v;
  2516. }
  2517. },
  2518. getVolume: function() {
  2519. return this.volume;
  2520. },
  2521. play: function(c, l, to) {
  2522. var s = this;
  2523. if (s.length == 0) {
  2524. return;
  2525. }
  2526. if (typeof l !== UNDEFINED) {
  2527. s.loopIndex = 0;
  2528. s.loopLength = l;
  2529. }
  2530. if (typeof c !== UNDEFINED) {
  2531. s.currentTime = c;
  2532. s.currentStart = c;
  2533. }
  2534. if (typeof to !== UNDEFINED) {
  2535. s.currentTimeTo = to > s.length ? s.length : to;
  2536. } else {
  2537. s.currentTimeTo = s.length;
  2538. }
  2539. s.data.loop = false;
  2540. s.playing = true;
  2541. if (s.timeout) {
  2542. clearTimeout(s.timeout);
  2543. delete s.timeout;
  2544. }
  2545. s.timeout = setTimeout(s._onended.bind(s), (s.currentTimeTo - s.currentTime) * 1000);
  2546. s.bufferSource = s.data.createBufferSource();
  2547. s.bufferSource.buffer = s.buffer;
  2548. s.volumeNode = s.data.createGainNode();
  2549. s.volumeNode.gain.value = s.volume;
  2550. s.volumeNode.connect(s.data.destination);
  2551. s.bufferSource.connect(s.volumeNode);
  2552. s.currentSave = s.data.currentTime;
  2553. if (s.bufferSource.start) {
  2554. s.bufferSource.start(0, s.currentTime, s.length - s.currentTime);
  2555. } else {
  2556. s.bufferSource.noteGrainOn(0, s.currentTime, s.length - s.currentTime);
  2557. }
  2558. },
  2559. playSegment: function(c, seg, l) {
  2560. this.playTo(c, c + seg, l);
  2561. },
  2562. playTo: function(c, to, l) {
  2563. this.play(c, l, to);
  2564. },
  2565. stop: function() {
  2566. var s = this;
  2567. if (!s.playing) {
  2568. return;
  2569. }
  2570. if (s.timeout) {
  2571. clearTimeout(s.timeout);
  2572. delete s.timeout;
  2573. }
  2574. if (s.bufferSource.stop) {
  2575. s.bufferSource.stop(0);
  2576. } else {
  2577. s.bufferSource.noteOff(0);
  2578. }
  2579. s.currentSave = s.getCurrentTime();
  2580. s.currentTime = s.currentSave;
  2581. s.playing = false;
  2582. },
  2583. close: function() {
  2584. var s = this;
  2585. if (!s.playing) {
  2586. return;
  2587. }
  2588. if (s.timeout) {
  2589. clearTimeout(s.timeout);
  2590. delete s.timeout;
  2591. }
  2592. if (s.bufferSource.stop) {
  2593. s.bufferSource.stop(0);
  2594. } else {
  2595. s.bufferSource.noteOff(0);
  2596. }
  2597. s.playing = false;
  2598. s.currentTime = 0;
  2599. s.currentSave = 0;
  2600. },
  2601. ll_check: function() {
  2602. var s = this;
  2603. if (!s.playing) {
  2604. return;
  2605. }
  2606. if (s.currentTimeTo < s.data.currentTime - s.currentSave + LSound.Container.time * 0.001) {
  2607. s._onended();
  2608. }
  2609. },
  2610. die: function() {
  2611. LSound.Container.remove(this);
  2612. }
  2613. };
  2614. for (var k in p) {
  2615. LWebAudio.prototype[k] = p[k];
  2616. }
  2617. return LWebAudio;
  2618. })();
  2619. var LMedia = (function() {
  2620. function LMedia() {
  2621. var s = this;
  2622. LExtends(s, LDisplayObject, []);
  2623. s.length = 0;
  2624. s.loopIndex = 0;
  2625. s.loopLength = 1;
  2626. s.playing = false;
  2627. s.oncomplete = null;
  2628. s.onsoundcomplete = null;
  2629. s.currentStart = 0;
  2630. LSound.Container.add(this);
  2631. }
  2632. var p = {
  2633. onload: function() {
  2634. var s = this;
  2635. if (s.data.readyState) {
  2636. s.length = s.data.duration - (LGlobal.android ? 0.1 : 0);
  2637. var e = new LEvent(LEvent.COMPLETE);
  2638. e.currentTarget = s;
  2639. e.target = s.data;
  2640. s.dispatchEvent(e);
  2641. return;
  2642. }
  2643. s.data.addEventListener("canplaythrough", function() {
  2644. s.onload();
  2645. }, false);
  2646. },
  2647. _onended: function() {
  2648. var s = this, i, l;
  2649. s.dispatchEvent(LEvent.SOUND_COMPLETE);
  2650. if (++s.loopIndex < s.loopLength) {
  2651. i = s.loopIndex;
  2652. l = s.loopLength;
  2653. s.close();
  2654. s.play(s.currentStart, s.loopLength, s.currentTimeTo);
  2655. s.loopIndex = i;
  2656. } else {
  2657. s.close();
  2658. }
  2659. },
  2660. load: function(u) {
  2661. var s = this;
  2662. if (Object.prototype.toString.apply(u) == "[object HTMLAudioElement]") {
  2663. s.data = u;
  2664. s.onload();
  2665. return;
  2666. }
  2667. var a, b, c, k, d, q = {
  2668. "mov": ["quicktime"],
  2669. "3gp": ["3gpp"],
  2670. "midi": ["midi"],
  2671. "mid": ["midi"],
  2672. "ogv": ["ogg"],
  2673. "m4a": ["acc"],
  2674. "mp3": ["mpeg"],
  2675. "wav": ["wav", "x-wav", "wave"],
  2676. "wave": ["wav", "x-wav", "wave"],
  2677. "aac": ["mp4", "aac"]
  2678. };
  2679. a = u.split(',');
  2680. for (k = 0; k < a.length; k++) {
  2681. b = a[k].split('.');
  2682. d = b[b.length - 1];
  2683. if (q[d]) {
  2684. d = q[d];
  2685. } else {
  2686. d = [d];
  2687. }
  2688. c = d.some(function(element, index, array) {
  2689. return s.data.canPlayType(s._type + "/" + element);
  2690. });
  2691. if (c) {
  2692. s.data.src = a[k];
  2693. s.onload();
  2694. s.data.load();
  2695. return;
  2696. } else {
  2697. console.warn("Not support " + b[b.length - 1] + ":" + a[k]);
  2698. var e = new LEvent(LEvent.COMPLETE);
  2699. e.currentTarget = e.target = s;
  2700. s.dispatchEvent(e);
  2701. }
  2702. }
  2703. if (s.oncomplete) {
  2704. s.oncomplete({});
  2705. }
  2706. },
  2707. getCurrentTime: function() {
  2708. return this.data.currentTime;
  2709. },
  2710. setVolume: function(v) {
  2711. this.data.volume = v;
  2712. },
  2713. getVolume: function() {
  2714. return this.data.volume;
  2715. },
  2716. play: function(c, l, to) {
  2717. var s = this;
  2718. if (s.length == 0) {
  2719. return;
  2720. }
  2721. if (LGlobal.android) {
  2722. LSound.Container.stopOther(this);
  2723. }
  2724. if (typeof c != UNDEFINED) {
  2725. s.data.currentTime = c;
  2726. s.currentStart = c;
  2727. }
  2728. if (typeof l != UNDEFINED) {
  2729. s.loopLength = l;
  2730. }
  2731. if (typeof to !== UNDEFINED) {
  2732. s.currentTimeTo = to > s.length ? s.length : to;
  2733. } else {
  2734. s.currentTimeTo = s.length;
  2735. }
  2736. if (s.timeout) {
  2737. clearTimeout(s.timeout);
  2738. delete s.timeout;
  2739. }
  2740. s.timeout = setTimeout(function() {
  2741. s._onended();
  2742. }, (s.currentTimeTo - s.data.currentTime) * 1000);
  2743. s.data.loop = false;
  2744. s.loopIndex = 0;
  2745. s.playing = true;
  2746. s.data.play();
  2747. },
  2748. playSegment: function(c, seg, l) {
  2749. this.playTo(c, c + seg, l);
  2750. },
  2751. playTo: function(c, to, l) {
  2752. this.play(c, l, to);
  2753. },
  2754. stop: function() {
  2755. var s = this;
  2756. if (!s.playing) {
  2757. return;
  2758. }
  2759. if (s.timeout) {
  2760. clearTimeout(s.timeout);
  2761. delete s.timeout;
  2762. }
  2763. s.playing = false;
  2764. s.data.pause();
  2765. },
  2766. close: function() {
  2767. var s = this;
  2768. if (!s.playing) {
  2769. return;
  2770. }
  2771. if (s.timeout) {
  2772. clearTimeout(s.timeout);
  2773. delete s.timeout;
  2774. }
  2775. s.playing = false;
  2776. s.data.pause();
  2777. s.data.currentTime = 0;
  2778. s.currentSave = 0;
  2779. },
  2780. ll_check: function() {
  2781. var s = this;
  2782. if (!s.playing) {
  2783. return;
  2784. }
  2785. if (s.data.duration != s._ll_duration) {
  2786. s._ll_duration = s.data.duration;
  2787. s.length = s.data.duration - (LGlobal.android ? 0.1 : 0);
  2788. }
  2789. if (s.currentTimeTo < s.data.currentTime + LSound.Container.time * 0.005) {
  2790. s._onended();
  2791. }
  2792. },
  2793. die: function() {
  2794. LSound.Container.remove(this);
  2795. }
  2796. };
  2797. for (var k in p) {
  2798. LMedia.prototype[k] = p[k];
  2799. }
  2800. return LMedia;
  2801. })();
  2802. var LSound = (function() {
  2803. function LSound(u) {
  2804. var s = this;
  2805. s.type = "LSound";
  2806. s._type = "audio";
  2807. if (LSound.webAudioEnabled && LGlobal.webAudio) {
  2808. LExtends(s, LWebAudio, []);
  2809. } else {
  2810. LExtends(s, LMedia, []);
  2811. s.data = new Audio();
  2812. s.data.loop = false;
  2813. s.data.autoplay = false;
  2814. }
  2815. if (u) {
  2816. s.load(u);
  2817. }
  2818. }
  2819. LSound.TYPE_SOUND = "sound";
  2820. LSound.webAudioEnabled = false;
  2821. var protocol = location.protocol;
  2822. if (protocol == "http:" || protocol == "https:") {
  2823. if (typeof webkitAudioContext !== UNDEFINED) {
  2824. try {
  2825. LWebAudio._context = new webkitAudioContext();
  2826. } catch (e) {}
  2827. } else if (typeof AudioContext !== UNDEFINED) {
  2828. try {
  2829. LWebAudio._context = new AudioContext();
  2830. } catch (e) {}
  2831. }
  2832. if (LWebAudio._context) {
  2833. LWebAudio.container.push(LWebAudio._context);
  2834. LSound.webAudioEnabled = true;
  2835. }
  2836. }
  2837. LSound.Container = {
  2838. ll_save: 0,
  2839. time: 0,
  2840. list: [],
  2841. ll_show: function() {
  2842. var c = LSound.Container;
  2843. var t = (new Date()).getTime();
  2844. c.time = t - (c.ll_save ? c.ll_save : t);
  2845. c.ll_save = t;
  2846. var l = c.list;
  2847. for (var i = l.length - 1; i >= 0; i--) {
  2848. if (l[i]) {
  2849. l[i].ll_check();
  2850. }
  2851. }
  2852. },
  2853. add: function(obj) {
  2854. if (LSound.Container.list.indexOf(obj) >= 0) {
  2855. return;
  2856. }
  2857. LSound.Container.list.push(obj);
  2858. },
  2859. remove: function(obj) {
  2860. var l = LSound.Container.list;
  2861. for (var i = l.length - 1; i >= 0; i--) {
  2862. if (l[i].objectIndex == obj.objectIndex) {
  2863. l.splice(i, 1);
  2864. break;
  2865. }
  2866. }
  2867. },
  2868. stopOther: function(obj) {
  2869. var l = LSound.Container.list;
  2870. for (var i = l.length - 1; i >= 0; i--) {
  2871. if (l[i].objectIndex != obj.objectIndex) {
  2872. l[i].stop();
  2873. }
  2874. }
  2875. }
  2876. };
  2877. LGlobal.childList.push(LSound.Container);
  2878. return LSound;
  2879. })();
  2880. var LVideo = (function() {
  2881. function LVideo(u) {
  2882. var s = this;
  2883. LExtends(s, LMedia, []);
  2884. s.type = "LVideo";
  2885. s._type = "video";
  2886. s.rotatex = 0;
  2887. s.rotatey = 0;
  2888. s.data = document.createElement("video");
  2889. s.data.style.display = "none";
  2890. document.body.appendChild(s.data);
  2891. s.data.id = "video_" + s.objectIndex;
  2892. s.data.loop = false;
  2893. s.data.autoplay = false;
  2894. if (u) {
  2895. s.load(u);
  2896. }
  2897. }
  2898. var p = {
  2899. _ll_show: function(c) {
  2900. var s = this;
  2901. c.drawImage(s.data, s.x, s.y);
  2902. },
  2903. die: function() {
  2904. var s = this;
  2905. document.body.removeChild(s.data);
  2906. delete s.data;
  2907. },
  2908. getWidth: function() {
  2909. return this.data.width;
  2910. },
  2911. getHeight: function() {
  2912. return this.data.height;
  2913. }
  2914. };
  2915. for (var k in p) {
  2916. LVideo.prototype[k] = p[k];
  2917. }
  2918. return LVideo;
  2919. })();
  2920. var LPoint = (function() {
  2921. function LPoint(x, y) {
  2922. var s = this;
  2923. s.x = x;
  2924. s.y = y;
  2925. }
  2926. LPoint.distance = function(p1, p2) {
  2927. return LPoint.distance2(p1.x, p1.y, p2.x, p2.y);
  2928. };
  2929. LPoint.distance2 = function(x1, y1, x2, y2) {
  2930. var x = x1 - x2, y = y1 - y2;
  2931. return Math.sqrt(x * x + y * y);
  2932. };
  2933. LPoint.interpolate = function(p1, p2, f) {
  2934. return new LPoint(p1.x + (p2.x - p1.x) * (1 - f), p1.y + (p2.y - p1.y) * (1 - f));
  2935. };
  2936. LPoint.polar = function(l, a) {
  2937. return new LPoint(l * Math.cos(a), l * Math.sin(a));
  2938. };
  2939. LPoint.prototype = {
  2940. toString: function() {
  2941. return '[object LPoint(' + this.x + ',' + this.y + ')]';
  2942. },
  2943. length: function() {
  2944. return LPoint.distance2(this.x, this.y, 0, 0);
  2945. },
  2946. add: function(v) {
  2947. return LPoint(this.x + v.x, this.y + v.y);
  2948. },
  2949. clone: function() {
  2950. return new LPoint(this.x, this.y);
  2951. },
  2952. setTo: function(x, y) {
  2953. this.x = x, this.y = y;
  2954. },
  2955. copyFrom: function(s) {
  2956. this.setTo(s.x, s.y);
  2957. },
  2958. equals: function(t) {
  2959. return this.x == t.x && this.y == t.y;
  2960. },
  2961. normalize: function(t) {
  2962. var s = this, scale = t / s.length();
  2963. s.x*=scale, s.y*=scale;
  2964. },
  2965. offset: function(dx, dy) {
  2966. this.x += dx;
  2967. this.y += dy;
  2968. },
  2969. subtract: function(v) {
  2970. return new LPoint(this.x - v.x, this.y - v.y);
  2971. }
  2972. };
  2973. return LPoint;
  2974. })();
  2975. var LRectangle = (function() {
  2976. function LRectangle(x, y, w, h) {
  2977. var s = this;
  2978. s.x = x;
  2979. s.y = y;
  2980. s.width = w;
  2981. s.height = h;
  2982. s.setRectangle();
  2983. }
  2984. LRectangle.prototype = {
  2985. setRectangle: function() {
  2986. var s = this;
  2987. s.bottom = s.y + s.height;
  2988. s.right = s.x + s.width;
  2989. s.left = s.x;
  2990. s.top = s.y;
  2991. },
  2992. clone: function() {
  2993. var s = this;
  2994. return new LRectangle(s.x, s.y, s.width, s.height);
  2995. },
  2996. contains: function(x, y) {
  2997. var s = this;
  2998. return x >= s.x && x <= s.right && y >= s.y && y <= s.bottom;
  2999. },
  3000. containsRect: function(rect) {
  3001. var s = this;
  3002. return rect.x >= s.x && rect.right <= s.right && rect.y >= s.y && rect.bottom <= s.bottom;
  3003. },
  3004. equals: function(v) {
  3005. var s = this;
  3006. return v.x == s.x && v.width == s.width && v.y == s.y && v.height == s.height;
  3007. },
  3008. inflate: function(dx, dy) {
  3009. var s = this;
  3010. s.width += dx;
  3011. s.height += dy;
  3012. s.setRectangle();
  3013. },
  3014. intersection: function(t) {
  3015. var s = this;
  3016. var ix = s.x > t.x ? s.x: t.x;
  3017. var iy = s.y > t.y ? s.y: t.y;
  3018. var ax = s.right > t.right ? t.right: s.right;
  3019. var ay = s.bottom > t.bottom ? t.bottom: s.bottom;
  3020. if (ix <= ax && iy <= ay) {
  3021. return new LRectangle(ix, iy, ax, ay);
  3022. } else {
  3023. return new LRectangle(0, 0, 0, 0);
  3024. }
  3025. },
  3026. intersects: function(t) {
  3027. var s = this;
  3028. var ix = s.x > t.x ? s.x: t.x;
  3029. var iy = s.y > t.y ? s.y: t.y;
  3030. var ax = s.right > t.right ? t.right: s.right;
  3031. var ay = s.bottom > t.bottom ? t.bottom: s.bottom;
  3032. return ix <= ax && iy <= ay;
  3033. },
  3034. isEmpty: function() {
  3035. var s = this;
  3036. return s.x == 0 && s.y == 0 && s.width == 0 && s.height == 0;
  3037. },
  3038. offset: function(dx, dy) {
  3039. var s = this;
  3040. s.x += dx;
  3041. s.y += dy;
  3042. s.setRectangle();
  3043. },
  3044. setEmpty: function() {
  3045. var s = this;
  3046. s.x = 0;
  3047. s.y = 0;
  3048. s.width = 0;
  3049. s.height = 0;
  3050. s.setRectangle();
  3051. },
  3052. setTo: function(xa, ya, w, h) {
  3053. var s = this;
  3054. s.x = xa;
  3055. s.y = ya;
  3056. s.width = w;
  3057. s.height = h;
  3058. s.setRectangle();
  3059. },
  3060. toString: function() {
  3061. var s = this;
  3062. return "[object LRectangle(" + s.x + "," + s.y + "," + s.width + "," + s.height + ")]";
  3063. },
  3064. union: function(t) {
  3065. var s = this;
  3066. return new LRectangle(s.x > t.x ? t.x : s.x, s.y > t.y ? t.y : s.y, s.right > t.right ? s.right : t.right, s.bottom > t.bottom ? s.bottom : t.bottom);
  3067. }
  3068. };
  3069. return LRectangle;
  3070. })();
  3071. var LGraphics = (function() {
  3072. function LGraphics() {
  3073. var s = this;
  3074. LExtends(s, LObject, []);
  3075. s.type = "LGraphics";
  3076. s.color = "#000000";
  3077. s.alpha = 1;
  3078. s.bitmap = null;
  3079. s.setList = new Array();
  3080. s.showList = new Array();
  3081. }
  3082. var p = {
  3083. ll_show: function() {
  3084. var s = this, k, l = s.setList.length;
  3085. if (l == 0) {
  3086. return;
  3087. }
  3088. for (k = 0; k < l; k++) {
  3089. s.setList[k]();
  3090. if (LGlobal.fpsStatus) {
  3091. LGlobal.fpsStatus.graphics++;
  3092. }
  3093. }
  3094. },
  3095. clone: function() {
  3096. var s = this, a = new LGraphics(), i, l, c;
  3097. a.color = s.color;
  3098. a.alpha = s.alpha;
  3099. a.bitmap = s.bitmap;
  3100. for (i = 0, l = s.setList.length; i < l; i++) {
  3101. c = s.setList[i];
  3102. a.setList.push(c);
  3103. }
  3104. for (i = 0, l = s.showList.length; i < l; i++) {
  3105. c = s.showList[i];
  3106. a.showList.push(c);
  3107. }
  3108. return a;
  3109. },
  3110. lineCap: function(t) {
  3111. var s = this;
  3112. s.setList.push(function() {
  3113. LGlobal.canvas.lineCap = t;
  3114. });
  3115. },
  3116. lineJoin: function(t) {
  3117. var s = this;
  3118. s.setList.push(function() {
  3119. LGlobal.canvas.lineJoin = t;
  3120. });
  3121. },
  3122. lineWidth: function(t) {
  3123. var s = this;
  3124. s.setList.push(function() {
  3125. LGlobal.canvas.lineWidth = t;
  3126. });
  3127. },
  3128. strokeStyle: function(co) {
  3129. var s = this;
  3130. s.setList.push(function() {
  3131. LGlobal.canvas.strokeStyle = co;
  3132. });
  3133. },
  3134. stroke: function() {
  3135. var s = this;
  3136. s.setList.push(function() {
  3137. LGlobal.canvas.stroke();
  3138. });
  3139. },
  3140. beginPath: function() {
  3141. var s = this;
  3142. s.setList.push(function() {
  3143. LGlobal.canvas.beginPath();
  3144. });
  3145. },
  3146. closePath: function() {
  3147. var s = this;
  3148. s.setList.push(function() {
  3149. LGlobal.canvas.closePath();
  3150. });
  3151. },
  3152. moveTo: function(x, y) {
  3153. var s = this;
  3154. s.setList.push(function() {
  3155. LGlobal.canvas.moveTo(x, y);
  3156. });
  3157. s.showList.push({
  3158. type: LShape.POINT,
  3159. arg: [x, y]
  3160. });
  3161. },
  3162. lineTo: function(x, y) {
  3163. var s = this;
  3164. s.setList.push(function() {
  3165. LGlobal.canvas.lineTo(x, y);
  3166. });
  3167. s.showList.push({
  3168. type: LShape.POINT,
  3169. arg: [x, y]
  3170. });
  3171. },
  3172. rect: function(x, y, w, h) {
  3173. var s = this;
  3174. s.setList.push(function() {
  3175. LGlobal.canvas.rect(x, y, w, h);
  3176. });
  3177. s.showList.push({
  3178. type: LShape.RECT,
  3179. arg: [x, y, w, h]
  3180. });
  3181. },
  3182. fillStyle: function(co) {
  3183. var s = this;
  3184. s.setList.push(function() {
  3185. LGlobal.canvas.fillStyle = co;
  3186. });
  3187. },
  3188. fill: function() {
  3189. var s = this;
  3190. s.setList.push(function() {
  3191. LGlobal.canvas.fill();
  3192. });
  3193. },
  3194. arc: function(x, y, r, sa, ea, aw) {
  3195. var s = this;
  3196. s.setList.push(function() {
  3197. LGlobal.canvas.arc(x, y, r, sa, ea, aw);
  3198. });
  3199. s.showList.push({
  3200. type: LShape.ARC,
  3201. arg: sa
  3202. });
  3203. },
  3204. lineStyle: function(tn, co) {
  3205. var s = this, c;
  3206. if (co == null) {
  3207. co = s.color;
  3208. }
  3209. s.color = co;
  3210. s.setList.push(function() {
  3211. c = LGlobal.canvas;
  3212. c.lineWidth = tn;
  3213. c.strokeStyle = co;
  3214. });
  3215. },
  3216. clear: function() {
  3217. var s = this;
  3218. s.bitmap = null;
  3219. s.setList.length = 0;
  3220. s.showList.length = 0;
  3221. },
  3222. beginBitmapFill: function(b) {
  3223. var s = this;
  3224. s.setList.push(function() {
  3225. s.bitmap = b;
  3226. });
  3227. },
  3228. drawEllipse: function(tn, lco, pa, isf, co) {
  3229. var s = this;
  3230. s.setList.push(function() {
  3231. var c, x, y, w, h, k, ox, oy, xe, ye, xm, ym;
  3232. c = LGlobal.canvas;
  3233. c.beginPath();
  3234. k = 0.5522848;
  3235. x = pa[0];
  3236. y = pa[1];
  3237. w = pa[2];
  3238. h = pa[3];
  3239. ox = (w / 2) * k;
  3240. oy = (h / 2) * k;
  3241. xe = x + w;
  3242. ye = y + h;
  3243. xm = x + w / 2;
  3244. ym = y + h / 2;
  3245. c.moveTo(x, ym);
  3246. c.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y);
  3247. c.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym);
  3248. c.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye);
  3249. c.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym);
  3250. if (s.bitmap) {
  3251. c.save();
  3252. c.clip();
  3253. c.drawImage(s.bitmap.image, s.bitmap.x, s.bitmap.y, s.bitmap.width, s.bitmap.height, 0, 0, s.bitmap.width, s.bitmap.height);
  3254. c.restore();
  3255. s.bitmap = null;
  3256. return;
  3257. }
  3258. if (isf) {
  3259. c.fillStyle = co;
  3260. c.fill();
  3261. }
  3262. if (tn > 0) {
  3263. c.lineWidth = tn;
  3264. c.strokeStyle = lco;
  3265. c.stroke();
  3266. }
  3267. });
  3268. s.showList.push({
  3269. type: LShape.RECT,
  3270. arg: pa
  3271. });
  3272. },
  3273. drawArc: function(tn, lco, pa, isf, co) {
  3274. var s = this;
  3275. s.setList.push(function() {
  3276. var c = LGlobal.canvas;
  3277. c.beginPath();
  3278. if (pa.length > 6 && pa[6]) {
  3279. c.moveTo(pa[0], pa[1]);
  3280. }
  3281. c.arc(pa[0], pa[1], pa[2], pa[3], pa[4], pa[5]);
  3282. if (pa.length > 6 && pa[6]) {
  3283. c.lineTo(pa[0], pa[1]);
  3284. }
  3285. if (s.bitmap) {
  3286. c.save();
  3287. c.clip();
  3288. c.drawImage(s.bitmap.image, s.bitmap.x, s.bitmap.y, s.bitmap.width, s.bitmap.height, 0, 0, s.bitmap.width, s.bitmap.height);
  3289. c.restore();
  3290. s.bitmap = null;
  3291. return;
  3292. }
  3293. if (isf) {
  3294. c.fillStyle = co;
  3295. c.fill();
  3296. }
  3297. if (tn > 0) {
  3298. c.lineWidth = tn;
  3299. c.strokeStyle = lco;
  3300. c.stroke();
  3301. }
  3302. });
  3303. s.showList.push({
  3304. type: LShape.ARC,
  3305. arg: pa
  3306. });
  3307. },
  3308. drawRect: function(tn, lco, pa, isf, co) {
  3309. var s = this;
  3310. s.setList.push(function() {
  3311. var c = LGlobal.canvas;
  3312. c.beginPath();
  3313. c.rect(pa[0], pa[1], pa[2], pa[3]);
  3314. c.closePath();
  3315. if (s.bitmap) {
  3316. c.save();
  3317. c.clip();
  3318. c.drawImage(s.bitmap.image, s.bitmap.x, s.bitmap.y, s.bitmap.width, s.bitmap.height, 0, 0, s.bitmap.width, s.bitmap.height);
  3319. c.restore();
  3320. s.bitmap = null;
  3321. return;
  3322. }
  3323. if (isf) {
  3324. c.fillStyle = co;
  3325. c.fill();
  3326. }
  3327. if (tn > 0) {
  3328. c.lineWidth = tn;
  3329. c.strokeStyle = lco;
  3330. c.stroke();
  3331. }
  3332. });
  3333. s.showList.push({
  3334. type: LShape.RECT,
  3335. arg: pa
  3336. });
  3337. },
  3338. drawRoundRect: function(tn, lco, pa, isf, co) {
  3339. var s = this;
  3340. s.setList.push(function() {
  3341. var c = LGlobal.canvas;
  3342. c.beginPath();
  3343. c.moveTo(pa[0] + pa[4], pa[1]);
  3344. c.lineTo(pa[0] + pa[2] - pa[4], pa[1]);
  3345. c.arcTo(pa[0] + pa[2], pa[1], pa[0] + pa[2], pa[1] + pa[4], pa[4]);
  3346. c.lineTo(pa[0] + pa[2], pa[1] + pa[3] - pa[4]);
  3347. c.arcTo(pa[0] + pa[2], pa[1] + pa[3], pa[0] + pa[2] - pa[4], pa[1] + pa[3], pa[4]);
  3348. c.lineTo(pa[0] + pa[4], pa[1] + pa[3]);
  3349. c.arcTo(pa[0], pa[1] + pa[3], pa[0], pa[1] + pa[3] - pa[4], pa[4]);
  3350. c.lineTo(pa[0], pa[1] + pa[4]);
  3351. c.arcTo(pa[0], pa[1], pa[0] + pa[4], pa[1], pa[4]);
  3352. c.closePath();
  3353. if (s.bitmap) {
  3354. c.save();
  3355. c.clip();
  3356. c.drawImage(s.bitmap.image, 0, 0, s.bitmap.width, s.bitmap.height, 0, 0, s.bitmap.width, s.bitmap.height);
  3357. c.restore();
  3358. s.bitmap = null;
  3359. return;
  3360. }
  3361. if (isf) {
  3362. c.fillStyle = co;
  3363. c.fill();
  3364. }
  3365. if (tn > 0) {
  3366. c.lineWidth = tn;
  3367. c.strokeStyle = lco;
  3368. c.stroke();
  3369. }
  3370. });
  3371. s.showList.push({
  3372. type: LShape.RECT,
  3373. arg: pa
  3374. });
  3375. },
  3376. drawVertices: function(tn, lco, v, isf, co) {
  3377. var s = this;
  3378. if (v.length < 3) {
  3379. return;
  3380. }
  3381. s.setList.push(function() {
  3382. var c = LGlobal.canvas;
  3383. c.beginPath();
  3384. c.moveTo(v[0][0], v[0][1]);
  3385. var i, l = v.length, pa;
  3386. for (i = 1; i < l; i++) {
  3387. pa = v[i];
  3388. c.lineTo(pa[0], pa[1]);
  3389. }
  3390. c.lineTo(v[0][0], v[0][1]);
  3391. c.closePath();
  3392. if (s.bitmap) {
  3393. c.save();
  3394. c.clip();
  3395. c.drawImage(s.bitmap.image, s.bitmap.x, s.bitmap.y, s.bitmap.width, s.bitmap.height, 0, 0, s.bitmap.width, s.bitmap.height);
  3396. c.restore();
  3397. s.bitmap = null;
  3398. return;
  3399. }
  3400. if (isf) {
  3401. c.fillStyle = co;
  3402. c.fill();
  3403. }
  3404. if (tn > 0) {
  3405. c.lineWidth = tn;
  3406. c.strokeStyle = lco;
  3407. c.closePath();
  3408. c.stroke();
  3409. }
  3410. });
  3411. s.showList.push({
  3412. type: LShape.VERTICES,
  3413. arg: v
  3414. });
  3415. },
  3416. drawTriangles: function(ve, ind, u, tn, lco) {
  3417. var s = this;
  3418. var i, j, l = ind.length, c;
  3419. s.setList.push(function() {
  3420. c = LGlobal.canvas;
  3421. var v = ve, a, k, sw;
  3422. for (i = 0, j = 0; i < l; i += 3) {
  3423. a = 0;
  3424. c.save();
  3425. c.beginPath();
  3426. c.moveTo(v[ind[i] * 2], v[ind[i] * 2 + 1]);
  3427. c.lineTo(v[ind[i + 1] * 2], v[ind[i + 1] * 2 + 1]);
  3428. c.lineTo(v[ind[i + 2] * 2], v[ind[i + 2] * 2 + 1]);
  3429. c.lineTo(v[ind[i] * 2], v[ind[i] * 2 + 1]);
  3430. c.closePath();
  3431. if (tn) {
  3432. c.lineWidth = tn;
  3433. c.strokeStyle = lco;
  3434. c.stroke();
  3435. }
  3436. c.clip();
  3437. if (i % 6 == 0) {
  3438. sw =- 1;
  3439. var w = (u[ind[i + 1 + j] * 2] - u[ind[i + j] * 2]) * s.bitmap.width;
  3440. var h = (u[ind[i + 2] * 2 + 1] - u[ind[i] * 2 + 1]) * s.bitmap.height;
  3441. if (j == 0 && w < 0) {
  3442. for (k = i + 9; k < l; k += 3) {
  3443. if (u[ind[i + 2] * 2 + 1] == u[ind[k + 2] * 2 + 1]) {
  3444. j = k - i;
  3445. break;
  3446. }
  3447. }
  3448. if (j == 0) {
  3449. j = l - i;
  3450. }
  3451. w = (u[ind[i + 1 + j] * 2] - u[ind[i + j] * 2]) * s.bitmap.width;
  3452. }
  3453. if (i + j >= l) {
  3454. w = (u[ind[i + j - l] * 2] - u[ind[i + 1] * 2]) * s.bitmap.width;
  3455. sw = u[ind[i] * 2] == 1 ? 0 : s.bitmap.width * u[ind[i] * 2] + w;
  3456. if (sw > s.bitmap.width) {
  3457. sw -= s.bitmap.width;
  3458. }
  3459. } else {
  3460. sw = s.bitmap.width * u[ind[i + j] * 2];
  3461. }
  3462. sh = s.bitmap.height * u[ind[i] * 2 + 1];
  3463. if (h < 0) {
  3464. h = (u[ind[i + 2 - (i > 0 ? 6 : - 6)] * 2 + 1] - u[ind[i - (i > 0 ? 6 : - 6)] * 2 + 1]) * s.bitmap.height;
  3465. sh = 0;
  3466. }
  3467. var t1 = (v[ind[i + 1] * 2] - v[ind[i] * 2]) / w;
  3468. var t2 = (v[ind[i + 1] * 2 + 1] - v[ind[i] * 2 + 1]) / w;
  3469. var t3 = (v[ind[i + 2] * 2] - v[ind[i] * 2]) / h;
  3470. var t4 = (v[ind[i + 2] * 2 + 1] - v[ind[i] * 2 + 1]) / h;
  3471. c.transform(t1, t2, t3, t4, v[ind[i] * 2], v[ind[i] * 2 + 1]);
  3472. c.drawImage(s.bitmap.image, s.bitmap.x + sw, s.bitmap.y + sh, w, h, 0, 0, w, h);
  3473. } else {
  3474. var w = (u[ind[i + 2 + j] * 2] - u[ind[i + 1 + j] * 2]) * s.bitmap.width;
  3475. var h = (u[ind[i + 2] * 2 + 1] - u[ind[i] * 2 + 1]) * s.bitmap.height;
  3476. if (j == 0 && w < 0) {
  3477. for (k = i + 9; k < l; k += 3) {
  3478. if (u[ind[i + 2] * 2 + 1] == u[ind[k + 2] * 2 + 1]) {
  3479. j = k - i;
  3480. break;
  3481. }
  3482. }
  3483. if (j == 0) {
  3484. j = l - i;
  3485. }
  3486. w = (u[ind[i + 2 + j] * 2] - u[ind[i + 1 + j] * 2]) * s.bitmap.width;
  3487. }
  3488. if (i + 1 + j >= l) {
  3489. w = (u[ind[i + 1 + j - l] * 2] - u[ind[i + 2] * 2]) * s.bitmap.width;
  3490. sw = u[ind[i + 1] * 2] == 1 ? 0 : s.bitmap.width * u[ind[i + 1] * 2] + w;
  3491. if (sw > s.bitmap.width) {
  3492. sw -= s.bitmap.width;
  3493. }
  3494. } else {
  3495. sw = s.bitmap.width * u[ind[i + 1 + j] * 2];
  3496. }
  3497. sh = s.bitmap.height * u[ind[i] * 2 + 1];
  3498. if (h < 0) {
  3499. h = (u[ind[i + 2 - (i > 0 ? 6 : - 6)] * 2 + 1] - u[ind[i - (i > 0 ? 6 : - 6)] * 2 + 1]) * s.bitmap.height;
  3500. sh = 0;
  3501. }
  3502. var t1 = (v[ind[i + 2] * 2] - v[ind[i + 1] * 2]) / w;
  3503. var t2 = (v[ind[i + 2] * 2 + 1] - v[ind[i + 1] * 2 + 1]) / w;
  3504. var t3 = (v[ind[i + 2] * 2] - v[ind[i] * 2]) / h;
  3505. var t4 = (v[ind[i + 2] * 2 + 1] - v[ind[i] * 2 + 1]) / h;
  3506. c.transform(t1, t2, t3, t4, v[ind[i + 1] * 2], v[ind[i + 1] * 2 + 1]);
  3507. c.drawImage(s.bitmap.image, s.bitmap.x + sw, s.bitmap.y + sh, w, h, 0, - h, w, h);
  3508. }
  3509. c.restore();
  3510. }
  3511. });
  3512. },
  3513. drawLine: function(tn, lco, pa) {
  3514. var s = this;
  3515. s.setList.push(function() {
  3516. var c = LGlobal.canvas;
  3517. c.beginPath();
  3518. c.moveTo(pa[0], pa[1]);
  3519. c.lineTo(pa[2], pa[3]);
  3520. c.lineWidth = tn;
  3521. c.strokeStyle = lco;
  3522. c.closePath();
  3523. c.stroke();
  3524. });
  3525. s.showList.push({
  3526. type: LShape.LINE,
  3527. arg: pa
  3528. });
  3529. },
  3530. add: function(f) {
  3531. this.setList.push(f);
  3532. },
  3533. ismouseon: function(e, co) {
  3534. var s = this;
  3535. if (e == null || e == UNDEFINED || s.showList.length == 0 ||!s.parent) {
  3536. return false;
  3537. }
  3538. return s.parent.ismouseonShapes(s.showList, e.offsetX, e.offsetY);
  3539. },
  3540. getWidth: function() {
  3541. var s = this, k, k1, min, max, v, l, l1;
  3542. for (k = 0, l = s.showList.length; k < l; k++) {
  3543. if (s.showList[k].type == LShape.RECT) {
  3544. if (min > s.showList[k].arg[0] || typeof min == UNDEFINED) {
  3545. min = s.showList[k].arg[0];
  3546. }
  3547. if (max < s.showList[k].arg[0] + s.showList[k].arg[2] || typeof max == UNDEFINED) {
  3548. max = s.showList[k].arg[0] + s.showList[k].arg[2];
  3549. }
  3550. } else if (s.showList[k].type == LShape.ARC) {
  3551. if (min > s.showList[k].arg[0] - s.showList[k].arg[2] || typeof min == UNDEFINED) {
  3552. min = s.showList[k].arg[0] - s.showList[k].arg[2];
  3553. }
  3554. if (max < s.showList[k].arg[0] + s.showList[k].arg[2] || typeof max == UNDEFINED) {
  3555. max = s.showList[k].arg[0] + s.showList[k].arg[2];
  3556. }
  3557. } else if (s.showList[k].type == LShape.VERTICES) {
  3558. for (k1 = 0, l1 = s.showList[k].arg.length; k1 < l1; k1++) {
  3559. v = s.showList[k].arg[k1];
  3560. if (min > v[0] || typeof min == UNDEFINED) {
  3561. min = v[0];
  3562. }
  3563. if (max < v[0] || typeof max == UNDEFINED) {
  3564. max = v[0];
  3565. }
  3566. }
  3567. } else if (s.showList[k].type == LShape.LINE) {
  3568. if (min > s.showList[k].arg[0] || typeof min == UNDEFINED) {
  3569. min = s.showList[k].arg[0];
  3570. }
  3571. if (min > s.showList[k].arg[2] || typeof min == UNDEFINED) {
  3572. min = s.showList[k].arg[2];
  3573. }
  3574. if (max < s.showList[k].arg[0] || typeof max == UNDEFINED) {
  3575. max = s.showList[k].arg[0];
  3576. }
  3577. if (max < s.showList[k].arg[2] || typeof max == UNDEFINED) {
  3578. max = s.showList[k].arg[2];
  3579. }
  3580. } else if (s.showList[k].type == LShape.POINT) {
  3581. if (min > s.showList[k].arg[0] || typeof min == UNDEFINED) {
  3582. min = s.showList[k].arg[0];
  3583. }
  3584. if (max < s.showList[k].arg[0] || typeof max == UNDEFINED) {
  3585. max = s.showList[k].arg[0];
  3586. }
  3587. }
  3588. }
  3589. if (typeof min == UNDEFINED) {
  3590. min = max = 0;
  3591. }
  3592. s.left = min;
  3593. if (l > 0 && max == min) {
  3594. max = min + 1;
  3595. }
  3596. return max - min;
  3597. },
  3598. getHeight: function() {
  3599. var s = this, k = null, k1 = null, l, l1, min, max, v;
  3600. for (k = 0, l = s.showList.length; k < l; k++) {
  3601. if (s.showList[k].type == LShape.RECT) {
  3602. if (min > s.showList[k].arg[1] || typeof min == UNDEFINED) {
  3603. min = s.showList[k].arg[1];
  3604. }
  3605. if (max < s.showList[k].arg[1] + s.showList[k].arg[3] || typeof max == UNDEFINED) {
  3606. max = s.showList[k].arg[1] + s.showList[k].arg[3];
  3607. }
  3608. } else if (s.showList[k].type == LShape.ARC) {
  3609. if (min > s.showList[k].arg[1] - s.showList[k].arg[2] || typeof min == UNDEFINED) {
  3610. min = s.showList[k].arg[1] - s.showList[k].arg[2];
  3611. }
  3612. if (max < s.showList[k].arg[1] + s.showList[k].arg[2] || typeof max == UNDEFINED) {
  3613. max = s.showList[k].arg[1] + s.showList[k].arg[2];
  3614. }
  3615. } else if (s.showList[k].type == LShape.VERTICES) {
  3616. for (k1 = 0, l1 = s.showList[k].arg.length; k1 < l1; k1++) {
  3617. v = s.showList[k].arg[k1];
  3618. if (min > v[1] || typeof min == UNDEFINED) {
  3619. min = v[1];
  3620. }
  3621. if (max < v[1] || typeof max == UNDEFINED) {
  3622. max = v[1];
  3623. }
  3624. }
  3625. } else if (s.showList[k].type == LShape.LINE) {
  3626. if (min > s.showList[k].arg[1] || typeof min == UNDEFINED) {
  3627. min = s.showList[k].arg[1];
  3628. }
  3629. if (min > s.showList[k].arg[3] || typeof min == UNDEFINED) {
  3630. min = s.showList[k].arg[3];
  3631. }
  3632. if (max < s.showList[k].arg[1] || typeof max == UNDEFINED) {
  3633. max = s.showList[k].arg[1];
  3634. }
  3635. if (max < s.showList[k].arg[3] || typeof max == UNDEFINED) {
  3636. max = s.showList[k].arg[3];
  3637. }
  3638. } else if (s.showList[k].type == LShape.POINT) {
  3639. if (min > s.showList[k].arg[1] || typeof min == UNDEFINED) {
  3640. min = s.showList[k].arg[1];
  3641. }
  3642. if (max < s.showList[k].arg[1] || typeof max == UNDEFINED) {
  3643. max = s.showList[k].arg[1];
  3644. }
  3645. }
  3646. }
  3647. if (typeof min == UNDEFINED) {
  3648. min = max = 0;
  3649. }
  3650. s.top = min;
  3651. if (l > 0 && max == min) {
  3652. max = min + 1;
  3653. }
  3654. return max - min;
  3655. },
  3656. startX: function() {
  3657. var s = this;
  3658. s.getWidth();
  3659. return s.left;
  3660. },
  3661. startY: function() {
  3662. var s = this;
  3663. s.getHeight();
  3664. return s.top;
  3665. }
  3666. };
  3667. for (var k in p) {
  3668. LGraphics.prototype[k] = p[k];
  3669. }
  3670. return LGraphics;
  3671. })();
  3672. var LShape = (function() {
  3673. function LShape() {
  3674. var s = this;
  3675. LExtends(s, LInteractiveObject, []);
  3676. s.type = "LShape";
  3677. s.graphics = new LGraphics();
  3678. s.graphics.parent = s;
  3679. }
  3680. LShape.POINT = "point";
  3681. LShape.LINE = "line";
  3682. LShape.ARC = "arc";
  3683. LShape.RECT = "rect";
  3684. LShape.VERTICES = "vertices";
  3685. var p = {
  3686. _ll_show: function(c) {
  3687. var s = this;
  3688. s.graphics.ll_show();
  3689. },
  3690. getWidth: function(maskSize) {
  3691. var s = this, mx, mw, left = s.graphics.startX(), right = left + s.graphics.getWidth();
  3692. if (maskSize && s.mask) {
  3693. mx = s.mask._startX ? s.mask._startX() : s.mask.startX();
  3694. mw = s.mask.getWidth();
  3695. if (left < mx) {
  3696. left = mx;
  3697. }
  3698. if (right > mx + mw) {
  3699. right = mx + mw;
  3700. }
  3701. }
  3702. s.ll_left = s.x + left;
  3703. s.ll_right = s.x + right;
  3704. return (right - left) * s.scaleX;
  3705. },
  3706. getHeight: function(maskSize) {
  3707. var s = this, my, mh, top = s.graphics.startY(), bottom = top + s.graphics.getHeight();
  3708. if (maskSize && s.mask) {
  3709. my = s.mask._startY ? s.mask._startY() : s.mask.startY();
  3710. mh = s.mask.getHeight();
  3711. if (top < my) {
  3712. top = my;
  3713. }
  3714. if (bottom > my + mh) {
  3715. bottom = my + mh;
  3716. }
  3717. }
  3718. s.ll_top = s.y + top;
  3719. s.ll_bottom = s.y + bottom;
  3720. return (bottom - top) * s.scaleY;
  3721. },
  3722. _startX: function() {
  3723. var s = this;
  3724. s.getWidth();
  3725. return s.ll_left;
  3726. },
  3727. startX: function() {
  3728. var s = this;
  3729. return s._startX() * s.scaleX;
  3730. },
  3731. _startY: function() {
  3732. var s = this;
  3733. s.getHeight();
  3734. return s.ll_top;
  3735. },
  3736. startY: function() {
  3737. var s = this;
  3738. return s._startY() * s.scaleY;
  3739. },
  3740. clone: function() {
  3741. var s = this, a = new LShape(), c, o;
  3742. a.copyProperty(s);
  3743. a.graphics = s.graphics.clone();
  3744. a.graphics.parent = a;
  3745. return a;
  3746. },
  3747. ismouseon: function(e, cd) {
  3748. var s = this, i = false, sc;
  3749. if (!s.visible || e == null) {
  3750. return false;
  3751. }
  3752. if (s.mask) {
  3753. if (!s.mask.parent) {
  3754. s.mask.parent = s.parent;
  3755. }
  3756. if (!s.mask.ismouseon(e, cd)) {
  3757. return false;
  3758. }
  3759. }
  3760. sc = {
  3761. x: s.x * cd.scaleX + cd.x,
  3762. y: s.y * cd.scaleY + cd.y,
  3763. scaleX: cd.scaleX * s.scaleX,
  3764. scaleY: cd.scaleY * s.scaleY
  3765. };
  3766. if (s.graphics) {
  3767. i = s.graphics.ismouseon(e, sc);
  3768. }
  3769. return i;
  3770. },
  3771. die: function() {
  3772. var s = this;
  3773. s.graphics.clear();
  3774. }
  3775. };
  3776. for (var k in p) {
  3777. LShape.prototype[k] = p[k];
  3778. }
  3779. return LShape;
  3780. })();
  3781. var LSprite = (function() {
  3782. function LSprite() {
  3783. var s = this;
  3784. LExtends(s, LDisplayObjectContainer, []);
  3785. s.type = "LSprite";
  3786. s.rotatex;
  3787. s.rotatey;
  3788. s.graphics = new LGraphics();
  3789. s.graphics.parent = s;
  3790. s.box2dBody = null;
  3791. s.shapes = new Array();
  3792. s.dragRange = null;
  3793. }
  3794. var p = {
  3795. setRotate: function(angle) {
  3796. var s = this;
  3797. if (s.box2dBody) {
  3798. s.box2dBody.SetAngle(angle);
  3799. } else {
  3800. s.rotate = angle;
  3801. }
  3802. },
  3803. _rotateReady: function() {
  3804. var s = this;
  3805. if (s.box2dBody) {
  3806. if ((typeof s.rotatex) == UNDEFINED) {
  3807. s.getRotateXY();
  3808. }
  3809. s.x = s.box2dBody.GetPosition().x * LGlobal.box2d.drawScale - s.parent.x - s.rotatex;
  3810. s.y = s.box2dBody.GetPosition().y * LGlobal.box2d.drawScale - s.parent.y - s.rotatey;
  3811. s.rotate = s.box2dBody.GetAngle();
  3812. }
  3813. },
  3814. _ll_show: function(c) {
  3815. var s = this;
  3816. s.graphics.ll_show();
  3817. LGlobal.show(s.childList);
  3818. s._ll_debugShape();
  3819. },
  3820. startDrag: function(touchPointID) {
  3821. var s = this, r, c;
  3822. if (s.ll_dragStart) {
  3823. return;
  3824. }
  3825. s.ll_touchPointID = touchPointID;
  3826. s.ll_dragStartX = s.x;
  3827. s.ll_dragStartY = s.y;
  3828. s.ll_dragMX = mouseX;
  3829. s.ll_dragMY = mouseY;
  3830. s.ll_dragStart = true;
  3831. LGlobal.dragList.push(s);
  3832. },
  3833. stopDrag: function() {
  3834. var s = this, i, l;
  3835. for (i = 0, l = LGlobal.dragList.length; i < l; i++) {
  3836. if (s.objectIndex == LGlobal.dragList[i].objectIndex) {
  3837. s.ll_dragStart = false;
  3838. LGlobal.dragList.splice(i, 1);
  3839. break;
  3840. }
  3841. }
  3842. },
  3843. getRotateXY: function(w, h) {
  3844. var s = this;
  3845. if (!w ||!h) {
  3846. w = s.getWidth();
  3847. h = s.getHeight();
  3848. }
  3849. s.rotatex = w / 2;
  3850. s.rotatey = h / 2;
  3851. },
  3852. getWidth: function(maskSize) {
  3853. var s = this, i, l, o, a, b, mx, mw, left = s.graphics.startX(), right = left + s.graphics.getWidth();
  3854. for (i = 0, l = s.childList.length; i < l; i++) {
  3855. o = s.childList[i];
  3856. if (typeof o.visible == UNDEFINED ||!o.visible) {
  3857. continue;
  3858. }
  3859. a = o.x;
  3860. if (typeof o._startX == "function") {
  3861. a = o._startX();
  3862. }
  3863. b = a + o.getWidth(maskSize);
  3864. if (a < left) {
  3865. left = a;
  3866. }
  3867. if (b > right) {
  3868. right = b;
  3869. }
  3870. }
  3871. if (maskSize && s.mask) {
  3872. mx = s.mask._startX ? s.mask._startX() : s.mask.startX();
  3873. mw = s.mask.getWidth();
  3874. if (left < mx) {
  3875. left = mx;
  3876. }
  3877. if (right > mx + mw) {
  3878. right = mx + mw;
  3879. }
  3880. }
  3881. s.ll_left = s.x + left;
  3882. s.ll_right = s.x + right;
  3883. return (right - left) * s.scaleX;
  3884. },
  3885. getHeight: function(maskSize) {
  3886. var s = this, i, l, o, a, b, my, mh, top = s.graphics.startY(), bottom = top + s.graphics.getHeight();
  3887. for (i = 0, l = s.childList.length; i < l; i++) {
  3888. o = s.childList[i];
  3889. if (typeof o.visible == UNDEFINED ||!o.visible) {
  3890. continue;
  3891. }
  3892. a = o.y;
  3893. if (typeof o._startY == "function") {
  3894. a = o._startY();
  3895. }
  3896. b = a + o.getHeight(maskSize);
  3897. if (a < top) {
  3898. top = a;
  3899. }
  3900. if (b > bottom) {
  3901. bottom = b;
  3902. }
  3903. }
  3904. if (maskSize && s.mask) {
  3905. my = s.mask._startY ? s.mask._startY() : s.mask.startY();
  3906. mh = s.mask.getHeight();
  3907. if (top < my) {
  3908. top = my;
  3909. }
  3910. if (bottom > my + mh) {
  3911. bottom = my + mh;
  3912. }
  3913. }
  3914. s.ll_top = s.y + top;
  3915. s.ll_bottom = s.y + bottom;
  3916. return (bottom - top) * s.scaleY;
  3917. },
  3918. _startX: function() {
  3919. var s = this;
  3920. s.getWidth();
  3921. return s.ll_left;
  3922. },
  3923. startX: function() {
  3924. var s = this;
  3925. return s._startX() * s.scaleX;
  3926. },
  3927. _startY: function() {
  3928. var s = this;
  3929. s.getHeight();
  3930. return s.ll_top;
  3931. },
  3932. startY: function() {
  3933. var s = this;
  3934. return s._startY() * s.scaleY;
  3935. },
  3936. _ll_loopframe: function() {
  3937. this.dispatchEvent(LEvent.ENTER_FRAME);
  3938. },
  3939. clone: function() {
  3940. var s = this, a = new LSprite(), c, o, i, l;
  3941. a.copyProperty(s);
  3942. a.graphics = s.graphics.clone();
  3943. a.graphics.parent = a;
  3944. a.childList.length = 0;
  3945. for (i = 0, l = s.childList.length; i < l; i++) {
  3946. c = s.childList[i];
  3947. if (c.clone) {
  3948. o = c.clone();
  3949. o.parent = a;
  3950. a.childList.push(o);
  3951. }
  3952. }
  3953. return a;
  3954. },
  3955. _mevent: function(type) {
  3956. var s = this, k;
  3957. for (k = 0; k < s.mouseList.length; k++) {
  3958. var o = s.mouseList[k];
  3959. if (o.type == type) {
  3960. return true;
  3961. }
  3962. }
  3963. return false;
  3964. },
  3965. ll_dispatchMouseEvent: function(type, e, cd, ox, oy) {
  3966. var s = this;
  3967. if (!s.mouseEnabled) {
  3968. return;
  3969. }
  3970. for (k = 0; k < s.mouseList.length; k++) {
  3971. var o = s.mouseList[k];
  3972. if (o.type == type) {
  3973. e.selfX = (ox - (s.x * cd.scaleX + cd.x)) / (cd.scaleX * s.scaleX);
  3974. e.selfY = (oy - (s.y * cd.scaleY + cd.y)) / (cd.scaleY * s.scaleY);
  3975. e.currentTarget = e.clickTarget = s;
  3976. if (!e.target) {
  3977. e.target = s;
  3978. }
  3979. o.listener(e, s);
  3980. }
  3981. }
  3982. },
  3983. ll_mouseout: function(e, type, cd, ox, oy) {
  3984. var s = this;
  3985. if (type == LMouseEvent.MOUSE_MOVE && s.ll_mousein) {
  3986. s.ll_mousein = false;
  3987. if (s._mevent(LMouseEvent.MOUSE_OUT)) {
  3988. s.ll_dispatchMouseEvent(LMouseEvent.MOUSE_OUT, e, cd, ox, oy);
  3989. }
  3990. if (s.mouseChildren) {
  3991. for (var k = s.childList.length - 1; k >= 0; k--) {
  3992. if (s.childList[k].mouseEvent && s.childList[k].ll_mouseout) {
  3993. s.childList[k].ll_mouseout(e, type, cd, ox, oy);
  3994. }
  3995. }
  3996. }
  3997. }
  3998. },
  3999. mouseEvent: function(e, type, cd) {
  4000. if (!e) {
  4001. return false;
  4002. }
  4003. var s = this, i, k, ox = e.offsetX, oy = e.offsetY, on, mc;
  4004. if (!s.visible) {
  4005. return false;
  4006. }
  4007. if (cd == null) {
  4008. cd = {
  4009. x: 0,
  4010. y: 0,
  4011. scaleX: 1,
  4012. scaleY: 1
  4013. };
  4014. }
  4015. on = s.ismouseon(e, cd);
  4016. if (on) {
  4017. if (type == LMouseEvent.MOUSE_MOVE&&!s.ll_mousein) {
  4018. s.ll_mousein = true;
  4019. if (s._mevent(LMouseEvent.MOUSE_OVER)) {
  4020. s.ll_dispatchMouseEvent(LMouseEvent.MOUSE_OVER, e, cd, ox, oy);
  4021. }
  4022. }
  4023. if (s.mouseChildren) {
  4024. mc = {
  4025. x: s.x * cd.scaleX + cd.x,
  4026. y: s.y * cd.scaleY + cd.y,
  4027. scaleX: cd.scaleX * s.scaleX,
  4028. scaleY: cd.scaleY * s.scaleY
  4029. };
  4030. for (k = s.childList.length - 1; k >= 0; k--) {
  4031. if (s.childList[k].mouseEvent) {
  4032. i = s.childList[k].mouseEvent(e, type, mc);
  4033. if (i) {
  4034. e.target = s.childList[k];
  4035. if (type != LMouseEvent.MOUSE_MOVE) {
  4036. break;
  4037. }
  4038. }
  4039. }
  4040. }
  4041. if (s._mevent(type)) {
  4042. s.ll_dispatchMouseEvent(type, e, cd, ox, oy);
  4043. }
  4044. }
  4045. return true;
  4046. } else {
  4047. s.ll_mouseout(e, type, cd, ox, oy);
  4048. }
  4049. return false;
  4050. },
  4051. hitTestPoint: function(x, y) {
  4052. var s = this, shapes = s.shapes;
  4053. if (!shapes || shapes.length == 0) {
  4054. s.getWidth();
  4055. s.getHeight();
  4056. shapes = [{
  4057. "type": LShape.RECT,
  4058. "arg": [s.ll_left - s.x, s.ll_top - s.y, s.ll_right - s.ll_left, s.ll_bottom - s.ll_top]
  4059. }
  4060. ];
  4061. }
  4062. return s.ismouseonShapes(shapes, x, y);
  4063. },
  4064. hitTestObject: function(obj) {
  4065. var s = this, shapes = s.shapes, shapes1 = obj.shapes, m, m1, j, child, j1, child1, vo1, v1;
  4066. if (!shapes || shapes.length == 0) {
  4067. s.getWidth();
  4068. s.getHeight();
  4069. shapes = [{
  4070. "type": LShape.RECT,
  4071. "arg": [s.ll_left - s.x, s.ll_top - s.y, s.ll_right - s.ll_left, s.ll_bottom - s.ll_top]
  4072. }
  4073. ];
  4074. }
  4075. if (!shapes1 || shapes1.length == 0) {
  4076. obj.getWidth();
  4077. obj.getHeight();
  4078. shapes1 = [{
  4079. "type": LShape.RECT,
  4080. "arg": [obj.ll_left - obj.x, obj.ll_top - obj.y, obj.ll_right - obj.ll_left, obj.ll_bottom - obj.ll_top]
  4081. }
  4082. ];
  4083. }
  4084. m = s.getRootMatrix();
  4085. m1 = obj.getRootMatrix();
  4086. for (j = shapes.length - 1; j >= 0; j--) {
  4087. child = shapes[j];
  4088. v1 = s._changeShape(child.type, child.arg, m);
  4089. for (j1 = shapes1.length - 1; j1 >= 0; j1--) {
  4090. child1 = shapes1[j1];
  4091. vo1 = obj._changeShape(child1.type, child1.arg, m1);
  4092. if (child.type == LShape.VERTICES || child.type == LShape.RECT) {
  4093. if (child1.type == LShape.VERTICES || child1.type == LShape.RECT) {
  4094. if (LGlobal.hitTestPolygon(v1, vo1)) {
  4095. return true;
  4096. }
  4097. } else if (child1.type == LShape.ARC) {
  4098. if (LGlobal.hitTestPolygonArc(v1, vo1)) {
  4099. return true;
  4100. }
  4101. }
  4102. } else {
  4103. if (child1.type == LShape.VERTICES || child1.type == LShape.RECT) {
  4104. if (LGlobal.hitTestPolygonArc(vo1, v1)) {
  4105. return true;
  4106. }
  4107. } else if (child1.type == LShape.ARC) {
  4108. if (Math.sqrt((v1[0] - vo1[0]) * (v1[0] - vo1[0]) + (v1[1] - vo1[1]) * (v1[1] - vo1[1])) < v1[2] + vo1[2]) {
  4109. return true;
  4110. }
  4111. }
  4112. }
  4113. }
  4114. }
  4115. return false;
  4116. },
  4117. addShape: function(type, arg) {
  4118. var s = this;
  4119. if (type == LShape.VERTICES && arg.length < 3) {
  4120. return;
  4121. }
  4122. s.shapes.push({
  4123. "type": type,
  4124. "arg": arg
  4125. });
  4126. return s.shapes;
  4127. },
  4128. addShapes: function(shapes) {
  4129. var s = this;
  4130. if (s.shapes.length == 0) {
  4131. s.shapes = shapes;
  4132. } else {
  4133. s.shapes = s.shapes.concat(shapes);
  4134. }
  4135. },
  4136. clearShape: function() {
  4137. this.shapes = [];
  4138. },
  4139. _ll_debugShape: function() {
  4140. var s = this, i, l, child, c, arg, j, ll;
  4141. if (!LGlobal.traceDebug || s.shapes.length == 0) {
  4142. return;
  4143. }
  4144. for (i = 0, l = s.shapes.length; i < l; i++) {
  4145. child = s.shapes[i];
  4146. c = LGlobal.canvas;
  4147. arg = child.arg;
  4148. c.beginPath();
  4149. if (child.type == LShape.RECT) {
  4150. c.rect(arg[0], arg[1], arg[2], arg[3]);
  4151. } else if (child.type == LShape.ARC) {
  4152. c.arc(arg[0], arg[1], arg[2], 0, 2 * Math.PI);
  4153. } else if (child.type == LShape.VERTICES) {
  4154. c.moveTo(arg[0][0], arg[0][1]);
  4155. for (j = 1, ll = arg.length; j < ll; j++) {
  4156. c.lineTo(arg[j][0], arg[j][1]);
  4157. };
  4158. c.lineTo(arg[0][0], arg[0][1]);
  4159. }
  4160. c.closePath();
  4161. c.strokeStyle = "#00FF00";
  4162. c.stroke();
  4163. }
  4164. },
  4165. ismouseon: function(e, cd) {
  4166. var s = this;
  4167. if (!s.visible || e == null) {
  4168. return false;
  4169. }
  4170. if (s.mask) {
  4171. if (!s.mask.parent) {
  4172. s.mask.parent = s.parent;
  4173. }
  4174. if (!s.mask.ismouseon(e, cd)) {
  4175. return false;
  4176. }
  4177. }
  4178. if (s.shapes && s.shapes.length > 0) {
  4179. return s.ismouseonShapes(s.shapes, e.offsetX, e.offsetY);
  4180. }
  4181. var k, i = false, l = s.childList, sc = {
  4182. x: s.x * cd.scaleX + cd.x,
  4183. y: s.y * cd.scaleY + cd.y,
  4184. scaleX: cd.scaleX * s.scaleX,
  4185. scaleY: cd.scaleY * s.scaleY
  4186. };
  4187. for (k = l.length - 1; k >= 0; k--) {
  4188. if (l[k].ismouseon) {
  4189. i = l[k].ismouseon(e, sc);
  4190. }
  4191. if (i) {
  4192. e.target = s.childList[k];
  4193. break;
  4194. }
  4195. }
  4196. if (!i) {
  4197. i = s.graphics.ismouseon(e, sc);
  4198. }
  4199. return i;
  4200. },
  4201. die: function() {
  4202. var s = this, i, c, l;
  4203. s.graphics.clear();
  4204. s.removeAllEventListener();
  4205. s.stopDrag();
  4206. if (s.box2dBody) {
  4207. s.clearBody();
  4208. }
  4209. for (i = 0, c = s.childList, l = c.length; i < l; i++) {
  4210. if (c[i].die) {
  4211. c[i].die();
  4212. }
  4213. }
  4214. }
  4215. };
  4216. for (var k in p) {
  4217. LSprite.prototype[k] = p[k];
  4218. }
  4219. return LSprite;
  4220. })();
  4221. var LButton = (function() {
  4222. function LButton(upState, overState, downState, disableState) {
  4223. var s = this;
  4224. LExtends(s, LSprite, []);
  4225. s.type = "LButton";
  4226. s.addChild(upState);
  4227. if (!overState) {
  4228. overState = upState;
  4229. } else {
  4230. s.addChild(overState);
  4231. }
  4232. if (!downState) {
  4233. downState = overState;
  4234. } else {
  4235. s.addChild(downState);
  4236. }
  4237. if (!disableState) {
  4238. disableState = upState;
  4239. } else {
  4240. s.addChild(disableState);
  4241. }
  4242. s.upState = s.bitmap_up = upState;
  4243. s.overState = s.bitmap_over = overState;
  4244. s.downState = downState;
  4245. s.disableState = disableState;
  4246. s._ll_down_sx = s.downState.scaleX;
  4247. s._ll_down_sy = s.downState.scaleY;
  4248. s.overState.visible = false;
  4249. s.downState.visible = false;
  4250. s.upState.visible = true;
  4251. s.buttonMode = true;
  4252. s.staticMode = false;
  4253. s._ll_cursorEnabled = true;
  4254. s.setState(LButton.STATE_ENABLE);
  4255. if (LMouseEventContainer.container[LMouseEvent.MOUSE_MOVE]) {
  4256. LMouseEventContainer.pushButton(s);
  4257. }
  4258. s.addEventListener(LMouseEvent.MOUSE_DOWN, s.ll_modeDown);
  4259. }
  4260. LButton.STATE_DISABLE = "disable";
  4261. LButton.STATE_ENABLE = "enable";
  4262. var p = {
  4263. setState: function(state) {
  4264. var s = this;
  4265. if (state == LButton.STATE_DISABLE) {
  4266. s.upState.visible = false;
  4267. s.overState.visible = false;
  4268. s.downState.visible = false;
  4269. s.disableState.visible = true;
  4270. s.mouseEnabled = false;
  4271. } else if (state == LButton.STATE_ENABLE) {
  4272. s.overState.visible = false;
  4273. s.downState.visible = false;
  4274. s.disableState.visible = false;
  4275. s.upState.visible = true;
  4276. s.mouseEnabled = true;
  4277. } else {
  4278. return;
  4279. }
  4280. s.state = state;
  4281. },
  4282. ll_mouseout: function(e, type, cd, ox, oy) {
  4283. var s = this;
  4284. if (!s.ll_mousein) {
  4285. return;
  4286. }
  4287. e.clickTarget = s;
  4288. s.ll_modeOut(e);
  4289. s.ll_mousein = false;
  4290. },
  4291. mouseEvent: function(e, type, cd) {
  4292. if (!e) {
  4293. return false;
  4294. }
  4295. var s = this;
  4296. if (type == LMouseEvent.MOUSE_MOVE && s.ll_button_mode) {
  4297. s.ll_button_mode(e);
  4298. }
  4299. return this.callParent("mouseEvent", arguments);
  4300. },
  4301. ll_button_mode: function(e) {
  4302. var s = this;
  4303. if (!s.visible) {
  4304. return;
  4305. }
  4306. e.clickTarget = s;
  4307. if (s.hitTestPoint(e.offsetX, e.offsetY)) {
  4308. s.ll_modeOver(e);
  4309. } else {
  4310. s.ll_modeOut(e);
  4311. }
  4312. },
  4313. ll_modeDown: function(e) {
  4314. var s = e.clickTarget, w, h, tw, th, x, y, tx, ty, onComplete;
  4315. if (!s.buttonMode || s.tween) {
  4316. return;
  4317. }
  4318. if (s.state == LButton.STATE_DISABLE) {
  4319. s.upState.visible = false;
  4320. s.overState.visible = false;
  4321. s.downState.visible = false;
  4322. s.disableState.visible = true;
  4323. return;
  4324. }
  4325. s.upState.visible = false;
  4326. s.overState.visible = false;
  4327. s.downState.visible = true;
  4328. s._tweenOver = s.ll_modeOver;
  4329. onComplete = function(obj) {
  4330. var s = obj.parent;
  4331. delete s.tween;
  4332. s._tweenOver({
  4333. clickTarget: s
  4334. });
  4335. delete s._tweenOver;
  4336. };
  4337. if (s.staticMode) {
  4338. s.tween = LTweenLiteTimeline.to(s.downState, 0.3, {}).to(s.downState, 0.1, {
  4339. onComplete: onComplete
  4340. });
  4341. } else {
  4342. w = s.downState.getWidth();
  4343. h = s.downState.getHeight();
  4344. tw = w * 1.1;
  4345. th = h * 1.1;
  4346. x = s.downState.x;
  4347. y = s.downState.y;
  4348. tx = x + (w - tw) * 0.5;
  4349. ty = y + (h - th) * 0.5;
  4350. s.tween = LTweenLiteTimeline.to(s.downState, 0.3, {
  4351. x: tx,
  4352. y: ty,
  4353. scaleX: s._ll_down_sx * 1.1,
  4354. scaleY: s._ll_down_sy * 1.1,
  4355. ease: Quart.easeOut
  4356. }).to(s.downState, 0.1, {
  4357. x: x,
  4358. y: y,
  4359. scaleX: s._ll_down_sx,
  4360. scaleY: s._ll_down_sy,
  4361. ease: Quart.easeOut,
  4362. onComplete: onComplete
  4363. });
  4364. }
  4365. },
  4366. ll_modeOver: function(e) {
  4367. var s = e.clickTarget;
  4368. if (!s.buttonMode) {
  4369. return;
  4370. }
  4371. if (s.tween) {
  4372. s._tweenOver = s.ll_modeOver;
  4373. return;
  4374. }
  4375. if (s.state == LButton.STATE_DISABLE) {
  4376. s.upState.visible = false;
  4377. s.overState.visible = false;
  4378. s.downState.visible = false;
  4379. s.disableState.visible = true;
  4380. return;
  4381. }
  4382. s.upState.visible = false;
  4383. s.downState.visible = false;
  4384. s.overState.visible = true;
  4385. if (LGlobal.os == OS_PC && s._ll_cursorEnabled && s.parent) {
  4386. LGlobal.cursor = "pointer";
  4387. }
  4388. },
  4389. ll_modeOut: function(e) {
  4390. var s = e.clickTarget;
  4391. if (!s.buttonMode) {
  4392. return;
  4393. }
  4394. if (s.tween) {
  4395. s._tweenOver = s.ll_modeOut;
  4396. return;
  4397. }
  4398. if (s.state == LButton.STATE_DISABLE) {
  4399. s.upState.visible = false;
  4400. s.overState.visible = false;
  4401. s.downState.visible = false;
  4402. s.disableState.visible = true;
  4403. return;
  4404. }
  4405. s.overState.visible = false;
  4406. s.downState.visible = false;
  4407. s.upState.visible = true;
  4408. },
  4409. setCursorEnabled: function(value) {
  4410. this._ll_cursorEnabled = value;
  4411. },
  4412. clone: function() {
  4413. var s = this;
  4414. return new LButton(s.upState.clone(), s.overState.clone(), s.downState.clone(), s.disableState.clone());
  4415. },
  4416. die: function() {
  4417. var s = this;
  4418. if (LMouseEventContainer.container[LMouseEvent.MOUSE_MOVE]) {
  4419. LMouseEventContainer.removeButton(s);
  4420. }
  4421. s.callParent("die", arguments);
  4422. }
  4423. };
  4424. for (var k in p) {
  4425. LButton.prototype[k] = p[k];
  4426. }
  4427. return LButton;
  4428. })();
  4429. function LBlendMode() {
  4430. throw "LBlendMode cannot be instantiated";
  4431. }
  4432. LBlendMode.SOURCE_OVER = "source-over";
  4433. LBlendMode.SOURCE_ATOP = "source-atop";
  4434. LBlendMode.SOURCE_IN = "source-in";
  4435. LBlendMode.SOURCE_OUT = "source-out";
  4436. LBlendMode.DESTINATION_OVER = "destination-over";
  4437. LBlendMode.DESTINATION_ATOP = "destination-atop";
  4438. LBlendMode.DESTINATION_IN = "destination-in";
  4439. LBlendMode.DESTINATION_OUT = "destination-out";
  4440. LBlendMode.LIGHTER = "lighter";
  4441. LBlendMode.COPY = "copy";
  4442. LBlendMode.XOR = "xor";
  4443. LBlendMode.NONE = null;
  4444. LBlendMode.NORMAL = null;
  4445. var LTextFieldType = function() {
  4446. throw "LTextFieldType cannot be instantiated";
  4447. };
  4448. LTextFieldType.INPUT = "input";
  4449. LTextFieldType.DYNAMIC = null;
  4450. LStyleSheet = (function() {
  4451. function LStyleSheet() {
  4452. var s = this;
  4453. LExtends(s, LObject, []);
  4454. s.styleIndex = 0;
  4455. s.styleNames = {};
  4456. }
  4457. LStyleSheet.prototype.clone = function() {
  4458. var s = this, a = new s.constructor();
  4459. a.copyProperty(s);
  4460. return a;
  4461. };
  4462. LStyleSheet.prototype.setStyle = function(styleName, styleObject) {
  4463. this.styleIndex++;
  4464. if (styleObject === null) {
  4465. if (this.styleNames[styleName]) {
  4466. delete this.styleNames[styleName];
  4467. }
  4468. return;
  4469. }
  4470. var arr = styleObject.replace(/(^\{)|(\}$)/g, "").split(";"), i, styleObjects;
  4471. styleObject = {};
  4472. for (i = 0; i < arr.length; i++) {
  4473. if (!arr[i]) {
  4474. continue;
  4475. }
  4476. var styleObjects = arr[i].split(":");
  4477. if (!styleObjects[0]) {
  4478. continue;
  4479. }
  4480. styleObject[styleObjects[0]] = styleObjects[1];
  4481. }
  4482. this.styleNames[styleName] = styleObject;
  4483. };
  4484. LStyleSheet.prototype.getStyle = function(styleName) {
  4485. return this.styleNames[styleName];
  4486. };
  4487. return LStyleSheet;
  4488. })();
  4489. LTextFormat = (function() {
  4490. function LTextFormat(font, size, color, bold, italic, underline) {
  4491. var s = this;
  4492. LExtends(s, LObject, []);
  4493. s.font = font ? font : "Arial";
  4494. s.size = size ? size : 15;
  4495. s.color = color ? color : "#000000";
  4496. s.bold = bold ? bold : false;
  4497. s.italic = italic ? italic : false;
  4498. s.underline = underline ? underline : false;
  4499. }
  4500. LTextFormat.prototype.clone = function() {
  4501. var s = this, a = new s.constructor();
  4502. a.copyProperty(s);
  4503. return a;
  4504. };
  4505. LTextFormat.prototype.getFontText = function() {
  4506. var s = this;
  4507. return (s.italic ? "italic " : "") + (s.bold ? "bold " : "") + s.size + "px " + s.font;
  4508. };
  4509. LTextFormat.prototype.setCss = function(css) {
  4510. var s = this, k;
  4511. for (k in css) {
  4512. switch (k) {
  4513. case "color":
  4514. s.color = css[k];
  4515. break;
  4516. case "font-family":
  4517. s.font = css[k];
  4518. break;
  4519. case "font-size":
  4520. s.size = css[k];
  4521. break;
  4522. case "font-style":
  4523. s.italic = (css[k] == "italic");
  4524. break;
  4525. case "font-weight":
  4526. s.bold = (css[k] == "bold");
  4527. break;
  4528. case "text-decoration":
  4529. s.color = (css[k] == "underline");
  4530. break;
  4531. }
  4532. }
  4533. };
  4534. return LTextFormat;
  4535. })();
  4536. var LTextField = (function() {
  4537. function LTextField() {
  4538. var s = this;
  4539. LExtends(s, LInteractiveObject, []);
  4540. s.type = "LTextField";
  4541. s.texttype = null;
  4542. s.text = "";
  4543. s.htmlText = "";
  4544. s.styleSheet = "";
  4545. s.font = "Arial";
  4546. s.size = 15;
  4547. s.color = "#000000";
  4548. s.weight = "normal";
  4549. s.textAlign = "left";
  4550. s.textBaseline = "top";
  4551. s.heightMode = LTextField.HEIGHT_MODE_BOTTOM;
  4552. s.stroke = false;
  4553. s.lineWidth = 1;
  4554. s.lineColor = "#000000";
  4555. s.width = 150;
  4556. s.height = s.size;
  4557. s.displayAsPassword = false;
  4558. s.wordWrap = false;
  4559. s.multiline = false;
  4560. s.numLines = 1;
  4561. s.speed = 0;
  4562. s._speedIndex = 100;
  4563. }
  4564. LTextField.HEIGHT_MODE_BOTTOM = "bottom";
  4565. LTextField.HEIGHT_MODE_BASELINE = "baseline";
  4566. var p = {
  4567. _showReady: function(c) {
  4568. var s = this;
  4569. c.font = s.weight + " " + s.size + "px " + s.font;
  4570. c.textAlign = s.textAlign;
  4571. c.textBaseline = s.textBaseline;
  4572. },
  4573. ll_getStyleSheet: function(textFormat, tabName, attribute, text) {
  4574. var s = this, pattern, tf = textFormat.clone();
  4575. if (tabName == "font") {
  4576. var i = 0;
  4577. while (attribute) {
  4578. if (i++>4)
  4579. break;
  4580. pattern = /(([^\s]*?)(\s*)=(\s*)("|')(.*?)\5)*/g;
  4581. var arr = pattern.exec(attribute);
  4582. if (!arr ||!arr[0]) {
  4583. break;
  4584. }
  4585. switch (arr[2]) {
  4586. case "face":
  4587. tf.font = arr[6];
  4588. break;
  4589. case "color":
  4590. tf.color = arr[6];
  4591. break;
  4592. case "size":
  4593. tf.size = arr[6];
  4594. break;
  4595. }
  4596. attribute = attribute.replace(arr[0], "").replace(/(^\s*)|(\s*$)|(\n)/g, "");
  4597. }
  4598. } else if (tabName == "b") {
  4599. tf.bold = true;
  4600. } else if (tabName == "u") {
  4601. tf.underline = true;
  4602. } else if (tabName == "i") {
  4603. tf.italic = true;
  4604. } else if (tabName == "p" && s.wordWrap) {
  4605. text = "\n" + text + "\n";
  4606. } else if (s.styleSheet) {
  4607. var sheetObj;
  4608. if (tabName == "span") {
  4609. pattern = /(([^\s]*?)(\s*)=(\s*)("|')(.*?)\5)*/g;
  4610. var arr = pattern.exec(attribute);
  4611. if (arr && arr[0]) {
  4612. switch (arr[2]) {
  4613. case "class":
  4614. sheetObj = s.styleSheet.getStyle("." + arr[6]);
  4615. break;
  4616. }
  4617. }
  4618. } else if (s.styleSheet.getStyle(tabName)) {
  4619. sheetObj = s.styleSheet.getStyle(tabName);
  4620. }
  4621. if (sheetObj) {
  4622. tf.setCss(sheetObj);
  4623. }
  4624. }
  4625. s.ll_getHtmlText(tf, text);
  4626. },
  4627. ll_getHtmlText: function(tf, text) {
  4628. if (!text) {
  4629. return;
  4630. }
  4631. var s = this, tabName, content, start, end, pattern = /<(.*?)(\s*)(.*?)>(.*?)<\/\1>/g, arr = pattern.exec(text);
  4632. if (!arr ||!arr[0]) {
  4633. s.ll_htmlTexts.push({
  4634. textFormat: tf.clone(),
  4635. text: text
  4636. });
  4637. return;
  4638. }
  4639. if (arr.index > 0) {
  4640. s.ll_htmlTexts.push({
  4641. textFormat: tf.clone(),
  4642. text: text.substring(0, arr.index)
  4643. });
  4644. }
  4645. tabName = arr[1];
  4646. start = arr.index;
  4647. end = start;
  4648. do {
  4649. end = text.indexOf("</" + tabName, end + 1);
  4650. start = text.indexOf("<" + tabName, start + 1);
  4651. }
  4652. while (start > 0 && start < end);
  4653. content = text.substring(text.indexOf(">", arr.index) + 1, end);
  4654. s.ll_getStyleSheet(tf, tabName, arr[3], content);
  4655. s.ll_getHtmlText(tf, text.substring(end + tabName.length + 3));
  4656. },
  4657. _ll_show: function(c) {
  4658. var s = this, d, lbl, i, rc, j, l, k, m, b, h, enter, tf, underlineY;
  4659. if (s.texttype == LTextFieldType.INPUT) {
  4660. s.inputBackLayer.ll_show();
  4661. rc = s.getRootCoordinate();
  4662. if (LGlobal.inputBox.name == "input" + s.objectIndex) {
  4663. LGlobal.inputBox.style.marginTop = (parseInt(LGlobal.canvasObj.style.marginTop) + (((rc.y + s.inputBackLayer.startY()) * parseInt(LGlobal.canvasObj.style.height) / LGlobal.canvasObj.height)>>>0)) + "px";
  4664. LGlobal.inputBox.style.marginLeft = (parseInt(LGlobal.canvasObj.style.marginLeft) + (((rc.x + s.inputBackLayer.startX()) * parseInt(LGlobal.canvasObj.style.width) / LGlobal.canvasObj.width)>>>0)) + "px";
  4665. }
  4666. if (LGlobal.inputTextField && LGlobal.inputTextField.objectIndex == s.objectIndex) {
  4667. return;
  4668. }
  4669. }
  4670. if (LGlobal.fpsStatus) {
  4671. LGlobal.fpsStatus.text++;
  4672. }
  4673. c.fillStyle = s.color;
  4674. if (s.stroke) {
  4675. c.strokeStyle = s.lineColor;
  4676. c.lineWidth = s.lineWidth + 1;
  4677. }
  4678. if (s.htmlText) {
  4679. if (s.ll_htmlText != s.htmlText || (s.styleSheet && (s.ll_style_objectIndex != s.styleSheet.objectIndex || s.ll_styleIndex == s.styleSheet.styleIndex))) {
  4680. tf = new LTextFormat();
  4681. s.ll_htmlTexts = [];
  4682. s.ll_htmlText = s.htmlText;
  4683. if (s.styleSheet) {
  4684. s.ll_style_objectIndex = s.styleSheet.objectIndex;
  4685. s.ll_styleIndex = s.styleSheet.styleIndex;
  4686. }
  4687. s.ll_getHtmlText(tf, s.htmlText);
  4688. }
  4689. j = 0, k = 0, m = 0, b = 0;
  4690. s._wordHeight = s.wordHeight || 30;
  4691. if (!LTextField.underlineY) {
  4692. LTextField.underlineY = {
  4693. "alphabetic": 0,
  4694. "top": 1,
  4695. "bottom": - 0.2,
  4696. "middle": 0.4,
  4697. "hanging": 0.8
  4698. };
  4699. }
  4700. s.ll_htmlTexts.forEach(function(element) {
  4701. var textFormat = element.textFormat, text = element.text;
  4702. c.font = textFormat.getFontText();
  4703. c.fillStyle = textFormat.color;
  4704. for (i = 0, l = text.length; i < l; i++) {
  4705. enter = /(?:\r\n|\r|\n|¥n)/.exec(text.substr(i, 1));
  4706. if (enter) {
  4707. j = 0;
  4708. k = i + 1;
  4709. m++;
  4710. } else {
  4711. h = c.measureText("O").width * 1.2;
  4712. if (s.stroke) {
  4713. c.strokeText(text.substr(i, 1), j, m * s._wordHeight);
  4714. }
  4715. c.fillText(text.substr(i, 1), j, m * s._wordHeight);
  4716. if (textFormat.underline) {
  4717. c.beginPath();
  4718. underlineY = m * s._wordHeight + h * LTextField.underlineY[s.textBaseline];
  4719. c.moveTo(j, underlineY);
  4720. c.lineTo(j + c.measureText(text.substr(i, 1)).width, underlineY);
  4721. c.stroke();
  4722. }
  4723. }
  4724. j += c.measureText(text.substr(i, 1)).width;
  4725. if (s.wordWrap && j + c.measureText(text.substr(i + 1, 1)).width > s.width) {
  4726. j = 0;
  4727. k = i + 1;
  4728. m++;
  4729. }
  4730. }
  4731. s.height = (m + 1) * s._wordHeight;
  4732. });
  4733. return;
  4734. }
  4735. lbl = s.text;
  4736. if (s.displayAsPassword) {
  4737. lbl = '';
  4738. for (i = 0, l = s.text.length; i < l; i++) {
  4739. lbl += '*';
  4740. }
  4741. }
  4742. if (s.wordWrap || s.multiline) {
  4743. j = 0, k = 0, m = 0, b = 0;
  4744. for (i = 0, l = s.text.length; i < l; i++) {
  4745. enter = /(?:\r\n|\r|\n|¥n)/.exec(lbl.substr(i, 1));
  4746. if (enter) {
  4747. j = 0;
  4748. k = i + 1;
  4749. m++;
  4750. } else {
  4751. if (s.stroke) {
  4752. c.strokeText(lbl.substr(i, 1), j, m * s.wordHeight);
  4753. }
  4754. c.fillText(lbl.substr(i, 1), j, m * s.wordHeight);
  4755. }
  4756. s.numLines = m;
  4757. j = c.measureText(s.text.substr(k, i + 1 - k)).width;
  4758. if (s.wordWrap && j + c.measureText(lbl.substr(i, 1)).width > s.width) {
  4759. j = 0;
  4760. k = i + 1;
  4761. m++;
  4762. }
  4763. }
  4764. s.height = (m + 1) * s.wordHeight;
  4765. } else {
  4766. s.numLines = 1;
  4767. if (s.stroke) {
  4768. c.strokeText(lbl, 0, 0, c.measureText(lbl).width);
  4769. }
  4770. c.fillText(lbl, 0, 0, c.measureText(lbl).width);
  4771. }
  4772. if (s.windRunning) {
  4773. s._ll_windRun();
  4774. }
  4775. },
  4776. _wordHeight: function(h) {
  4777. var s = this;
  4778. if (h > 0) {
  4779. s.wordHeight = h;
  4780. } else {
  4781. s.wordWrap = false;
  4782. s.wordHeight = s.getHeight();
  4783. }
  4784. s.height = 0;
  4785. },
  4786. setMultiline: function(v, h) {
  4787. var s = this;
  4788. if (v) {
  4789. s._wordHeight(h);
  4790. }
  4791. s.multiline = v;
  4792. },
  4793. setWordWrap: function(v, h) {
  4794. var s = this;
  4795. if (v) {
  4796. s._wordHeight(h);
  4797. }
  4798. s.wordWrap = v;
  4799. },
  4800. setType: function(type, inputBackLayer) {
  4801. var s = this;
  4802. if (s.texttype != type && type == LTextFieldType.INPUT) {
  4803. if (inputBackLayer == null || inputBackLayer.type != "LSprite") {
  4804. s.inputBackLayer = new LSprite();
  4805. s.inputBackLayer.graphics.drawRect(1, "#000000", [0, - s.getHeight() * 0.4, s.width, s.getHeight() * 1.5]);
  4806. } else {
  4807. s.inputBackLayer = inputBackLayer;
  4808. }
  4809. s.inputBackLayer.parent = s;
  4810. if (LMouseEventContainer.container[LMouseEvent.MOUSE_DOWN]) {
  4811. LMouseEventContainer.pushInputBox(s);
  4812. }
  4813. } else {
  4814. s.inputBackLayer = null;
  4815. LMouseEventContainer.removeInputBox(s);
  4816. }
  4817. s.texttype = type;
  4818. },
  4819. ismouseon: function(e, cood) {
  4820. var s = this;
  4821. if (!e) {
  4822. return false;
  4823. }
  4824. if (!s.visible) {
  4825. return false;
  4826. }
  4827. if (!cood) {
  4828. cood = {
  4829. x: 0,
  4830. y: 0,
  4831. scaleX: 1,
  4832. scaleY: 1
  4833. };
  4834. }
  4835. if (s.mask) {
  4836. if (!s.mask.parent) {
  4837. s.mask.parent = s.parent;
  4838. }
  4839. if (!s.mask.ismouseon(e, cood)) {
  4840. return false;
  4841. }
  4842. }
  4843. if (s.inputBackLayer) {
  4844. return s.inputBackLayer.ismouseon(e, {
  4845. x: s.x * cood.scaleX + cood.x,
  4846. y: s.y * cood.scaleY + cood.y,
  4847. scaleX: cood.scaleX * s.scaleX,
  4848. scaleY: cood.scaleY * s.scaleY
  4849. });
  4850. }
  4851. return s.ismouseonShapes([{
  4852. type: LShape.RECT,
  4853. arg: [0, 0, s._getWidth(), s._getHeight()]
  4854. }
  4855. ], e.offsetX, e.offsetY);
  4856. },
  4857. clone: function() {
  4858. var s = this, a = new s.constructor();
  4859. a.copyProperty(s);
  4860. a.texttype = null;
  4861. if (s.texttype == LTextFieldType.INPUT) {
  4862. a.setType(LTextFieldType.INPUT);
  4863. }
  4864. return a;
  4865. },
  4866. mouseEvent: function(event, type, cood) {
  4867. var s = this, on;
  4868. if (s.inputBackLayer == null || type != LMouseEvent.MOUSE_DOWN) {
  4869. return;
  4870. }
  4871. on = s.ismouseon(event, cood);
  4872. if (!on) {
  4873. return;
  4874. }
  4875. s.focus();
  4876. },
  4877. _ll_getValue: function() {
  4878. if (LGlobal.inputBox.style.display != NONE) {
  4879. LGlobal.inputTextField.text = LGlobal.inputTextBox.value;
  4880. LEvent.removeEventListener(LGlobal.inputTextBox, LKeyboardEvent.KEY_DOWN, LGlobal.inputTextField._ll_input);
  4881. LGlobal.inputBox.style.display = NONE;
  4882. LGlobal.inputTextField.dispatchEvent(LFocusEvent.FOCUS_OUT);
  4883. LGlobal.inputTextField = null;
  4884. }
  4885. },
  4886. updateInput: function() {
  4887. var s = this;
  4888. if (s.texttype == LTextFieldType.INPUT && LGlobal.inputTextField.objectIndex == s.objectIndex) {
  4889. LGlobal.inputTextBox.value = LGlobal.inputTextField.text;
  4890. }
  4891. },
  4892. _ll_input: function(e) {
  4893. var event = new LEvent(LTextEvent.TEXT_INPUT);
  4894. event.keyCode = e.keyCode;
  4895. LGlobal.inputTextField.text = LGlobal.inputTextBox.value;
  4896. if (LGlobal.inputTextField.hasEventListener(LTextEvent.TEXT_INPUT)) {
  4897. e.returnValue = LGlobal.inputTextField.dispatchEvent(event);
  4898. } else {
  4899. e.returnValue = true;
  4900. }
  4901. },
  4902. focus: function() {
  4903. var s = this, sc, sx;
  4904. if (!s.parent) {
  4905. return;
  4906. }
  4907. if (s.texttype != LTextFieldType.INPUT) {
  4908. return;
  4909. }
  4910. if (LGlobal.inputTextField && LGlobal.inputTextField.objectIndex != s.objectIndex) {
  4911. s._ll_getValue();
  4912. }
  4913. s.dispatchEvent(LFocusEvent.FOCUS_IN);
  4914. sc = s.getAbsoluteScale();
  4915. LGlobal.inputBox.style.display = "";
  4916. LGlobal.inputBox.name = "input" + s.objectIndex;
  4917. LGlobal.inputTextField = s;
  4918. LGlobal.inputTextareaBoxObj.style.display = NONE;
  4919. LGlobal.inputTextBoxObj.style.display = NONE;
  4920. LGlobal.passwordBoxObj.style.display = NONE;
  4921. if (s.displayAsPassword) {
  4922. LGlobal.inputTextBox = LGlobal.passwordBoxObj;
  4923. } else if (s.multiline) {
  4924. LGlobal.inputTextBox = LGlobal.inputTextareaBoxObj;
  4925. } else {
  4926. LGlobal.inputTextBox = LGlobal.inputTextBoxObj;
  4927. }
  4928. sx = parseInt(LGlobal.canvasObj.style.width) / LGlobal.canvasObj.width;
  4929. sy = parseInt(LGlobal.canvasObj.style.height) / LGlobal.canvasObj.height;
  4930. LGlobal.inputTextBox.style.display = "";
  4931. LGlobal.inputTextBox.value = s.text;
  4932. LGlobal.inputTextBox.style.height = s.inputBackLayer.getHeight() * sc.scaleY * s.scaleY * sy + "px";
  4933. LGlobal.inputTextBox.style.width = s.inputBackLayer.getWidth() * sc.scaleX * s.scaleX * sx + "px";
  4934. LGlobal.inputTextBox.style.color = s.color;
  4935. LGlobal.inputTextBox.style.fontSize = ((s.size * parseFloat(LGlobal.canvasObj.style.height) / LGlobal.canvasObj.height)>>0) + "px";
  4936. LGlobal.inputTextBox.style.fontFamily = s.font;
  4937. LEvent.addEventListener(LGlobal.inputTextBox, LKeyboardEvent.KEY_DOWN, LGlobal.inputTextField._ll_input);
  4938. if (s.texttype == LTextFieldType.INPUT) {
  4939. rc = s.getRootCoordinate();
  4940. if (LGlobal.inputBox.name == "input" + s.objectIndex) {
  4941. LGlobal.inputBox.style.marginTop = (parseInt(LGlobal.canvasObj.style.marginTop) + (((rc.y + s.inputBackLayer.startY()) * parseInt(LGlobal.canvasObj.style.height) / LGlobal.canvasObj.height)>>>0)) + "px";
  4942. LGlobal.inputBox.style.marginLeft = (parseInt(LGlobal.canvasObj.style.marginLeft) + (((rc.x + s.inputBackLayer.startX()) * parseInt(LGlobal.canvasObj.style.width) / LGlobal.canvasObj.width)>>>0)) + "px";
  4943. }
  4944. }
  4945. setTimeout(function() {
  4946. LGlobal.inputTextBox.focus();
  4947. }, 0);
  4948. },
  4949. _getWidth: function() {
  4950. var s = this;
  4951. if (s.wordWrap) {
  4952. return s.width;
  4953. }
  4954. LGlobal.canvas.font = s.size + "pt " + s.font;
  4955. return LGlobal.canvas.measureText(s.text).width;
  4956. },
  4957. getWidth: function(maskSize) {
  4958. var s = this, w, mx, mw;
  4959. w = s._getWidth() * s.scaleX;
  4960. if (maskSize && s.mask) {
  4961. mx = s.mask._startX ? s.mask._startX() : s.mask.startX();
  4962. if (mx > w) {
  4963. return 0;
  4964. }
  4965. mw = s.mask.getWidth();
  4966. if (mx + mw > w) {
  4967. return w - mx;
  4968. } else {
  4969. return mw;
  4970. }
  4971. }
  4972. return w;
  4973. },
  4974. _getHeight: function() {
  4975. var s = this, c = LGlobal.canvas, i, l, j, k, m, enter;
  4976. if (s.wordWrap) {
  4977. c.font = s.weight + " " + s.size + "pt " + s.font;
  4978. if (s.height == 0) {
  4979. j = 0, k = 0, m = 0;
  4980. for (i = 0, l = s.text.length; i < l; i++) {
  4981. j = c.measureText(s.text.substr(k, i - k)).width;
  4982. enter = /(?:\r\n|\r|\n|¥n)/.exec(s.text.substr(i, 1));
  4983. if ((s.wordWrap && j > s.width) || enter) {
  4984. j = 0;
  4985. k = i;
  4986. m++;
  4987. if (enter) {
  4988. k++;
  4989. }
  4990. }
  4991. }
  4992. s.height = (m + 1) * s.wordHeight;
  4993. }
  4994. return s.height;
  4995. }
  4996. c.font = s.weight + " " + s.size + "pt " + s.font;
  4997. l = c.measureText("O").width * 1.2;
  4998. if (s.heightMode == LTextField.HEIGHT_MODE_BASELINE) {
  4999. l = l * 1.2;
  5000. }
  5001. return l;
  5002. },
  5003. getHeight: function(maskSize) {
  5004. var s = this, h, my, mh;
  5005. h = s._getHeight() * s.scaleY;
  5006. if (maskSize && s.mask) {
  5007. my = s.mask._startY ? s.mask._startY() : s.mask.startY();
  5008. if (my > h) {
  5009. return 0;
  5010. }
  5011. mh = s.mask.getHeight();
  5012. if (my + mh > h) {
  5013. return h - my;
  5014. } else {
  5015. return mh;
  5016. }
  5017. }
  5018. return h;
  5019. },
  5020. wind: function(listener) {
  5021. var s = this;
  5022. s.wind_over_function = listener;
  5023. s.windRunning = true;
  5024. s._ll_wind_text = s.text;
  5025. s.text = "";
  5026. s._ll_wind_length = 0;
  5027. },
  5028. _ll_windRun: function() {
  5029. var s = this;
  5030. if (s._speedIndex++<s.speed) {
  5031. return;
  5032. }
  5033. s._speedIndex = 0;
  5034. if (s._ll_wind_length > s._ll_wind_text.length) {
  5035. s.windRunning = false;
  5036. if (s.wind_over_function) {
  5037. s.wind_over_function();
  5038. }
  5039. s.dispatchEvent(new LEvent(LTextEvent.WIND_COMPLETE));
  5040. return;
  5041. }
  5042. s.text = s._ll_wind_text.substring(0, s._ll_wind_length);
  5043. s._ll_wind_length++;
  5044. },
  5045. die: function() {
  5046. LMouseEventContainer.removeInputBox(this);
  5047. }
  5048. };
  5049. for (var k in p) {
  5050. LTextField.prototype[k] = p[k];
  5051. }
  5052. return LTextField;
  5053. })();
  5054. var LBitmap = (function() {
  5055. function LBitmap(bitmapdata) {
  5056. var s = this;
  5057. LExtends(s, LDisplayObject, []);
  5058. s.type = "LBitmap";
  5059. s.rotateCenter = true;
  5060. s.bitmapData = bitmapdata;
  5061. if (s.bitmapData) {
  5062. s.width = s.bitmapData.width;
  5063. s.height = s.bitmapData.height;
  5064. }
  5065. }
  5066. var p = {
  5067. _canShow: function() {
  5068. return (this.visible && this.bitmapData);
  5069. },
  5070. _rotateReady: function() {
  5071. var s = this;
  5072. if (s.rotate != 0 && s.rotateCenter) {
  5073. s.rotatex = s.getWidth() * 0.5;
  5074. s.rotatey = s.getHeight() * 0.5;
  5075. } else {
  5076. s.rotatex = s.rotatey = 0;
  5077. }
  5078. },
  5079. _coordinate: function(c) {},
  5080. _ll_show: function() {
  5081. this.ll_draw();
  5082. },
  5083. ll_draw: function() {
  5084. var s = this;
  5085. if (LGlobal.fpsStatus) {
  5086. LGlobal.fpsStatus.bitmapData++;
  5087. }
  5088. LGlobal.canvas.drawImage(s.bitmapData.image, s.bitmapData.x, s.bitmapData.y, s.bitmapData.width, s.bitmapData.height, s.x, s.y, s.bitmapData.width, s.bitmapData.height);
  5089. },
  5090. clone: function() {
  5091. var s = this, a = new LBitmap(s.bitmapData.clone());
  5092. a.copyProperty(s);
  5093. a.rotateCenter = s.rotateCenter;
  5094. return a;
  5095. },
  5096. ismouseon: function(e, cood) {
  5097. var s = this;
  5098. if (!e) {
  5099. return false;
  5100. }
  5101. if (!s.visible ||!s.bitmapData) {
  5102. return false;
  5103. }
  5104. if (s.mask) {
  5105. if (!s.mask.parent) {
  5106. s.mask.parent = s.parent;
  5107. }
  5108. if (!s.mask.ismouseon(e, cood)) {
  5109. return false;
  5110. }
  5111. }
  5112. return s.ismouseonShapes([{
  5113. type: LShape.RECT,
  5114. arg: [0, 0, s.bitmapData.width, s.bitmapData.height]
  5115. }
  5116. ], e.offsetX, e.offsetY);
  5117. },
  5118. getWidth: function(maskSize) {
  5119. var s = this, w, mx, mw;
  5120. w = s.bitmapData != null ? s.bitmapData.width * (s.scaleX > 0 ? s.scaleX : - s.scaleX) : 0;
  5121. if (maskSize && s.mask) {
  5122. mx = s.mask._startX ? s.mask._startX() : s.mask.startX();
  5123. if (mx > w) {
  5124. return 0;
  5125. }
  5126. mw = s.mask.getWidth();
  5127. if (mx + mw > w) {
  5128. return w - mx;
  5129. } else {
  5130. return mw;
  5131. }
  5132. }
  5133. return w;
  5134. },
  5135. getHeight: function(maskSize) {
  5136. var s = this, h, my, mh;
  5137. h = s.bitmapData != null ? s.bitmapData.height * (s.scaleY > 0 ? s.scaleY : - s.scaleY) : 0;
  5138. if (maskSize && s.mask) {
  5139. my = s.mask._startY ? s.mask._startY() : s.mask.startY();
  5140. if (my > h) {
  5141. return 0;
  5142. }
  5143. mh = s.mask.getHeight();
  5144. if (my + mh > h) {
  5145. return h - my;
  5146. } else {
  5147. return mh;
  5148. }
  5149. }
  5150. return h;
  5151. },
  5152. startX: function() {
  5153. return this.x;
  5154. },
  5155. startY: function() {
  5156. return this.y;
  5157. },
  5158. die: function() {}
  5159. };
  5160. for (var k in p) {
  5161. LBitmap.prototype[k] = p[k];
  5162. }
  5163. return LBitmap;
  5164. })();
  5165. var LBitmapData = (function() {
  5166. function LBitmapData(image, x, y, width, height, dataType) {
  5167. var s = this;
  5168. LExtends(s, LObject, []);
  5169. s.type = "LBitmapData";
  5170. if (typeof dataType == UNDEFINED) {
  5171. dataType = LBitmapData.DATA_IMAGE;
  5172. }
  5173. s.oncomplete = null;
  5174. s._locked = false;
  5175. s._setPixel = false;
  5176. s.x = (x == null ? 0 : x);
  5177. s.y = (y == null ? 0 : y);
  5178. s.width = 0;
  5179. s.height = 0;
  5180. s.dataType = null;
  5181. if (image && typeof image == "object") {
  5182. s.image = image;
  5183. s.dataType = LBitmapData.DATA_IMAGE;
  5184. s.width = (width == null ? s.image.width : width);
  5185. s.height = (height == null ? s.image.height : height);
  5186. s._setDataType(dataType);
  5187. } else {
  5188. s._createCanvas();
  5189. s.dataType = LBitmapData.DATA_CANVAS;
  5190. s._canvas.width = s.width = (width == null ? 1 : width);
  5191. s._canvas.height = s.height = (height == null ? 1 : height);
  5192. if (typeof image == "string") {
  5193. image = parseInt(image.replace("#", "0x"));
  5194. }
  5195. if (typeof image == "number") {
  5196. var d = s._context.createImageData(s.width, s.height);
  5197. for (var i = 0; i < d.data.length; i += 4) {
  5198. d.data[i + 0] = image>>16 & 0xFF;
  5199. d.data[i + 1] = image>>8 & 0xFF;
  5200. d.data[i + 2] = image & 0xFF;
  5201. d.data[i + 3] = 255;
  5202. }
  5203. s._context.putImageData(d, 0, 0);
  5204. }
  5205. s.image = s._canvas;
  5206. if (dataType == LBitmapData.DATA_IMAGE) {
  5207. s._setDataType(dataType);
  5208. }
  5209. }
  5210. s.resize();
  5211. }
  5212. LBitmapData.DATA_IMAGE = "data_image";
  5213. LBitmapData.DATA_CANVAS = "data_canvas";
  5214. var p = {
  5215. _setDataType: function(dataType) {
  5216. var s = this;
  5217. if (s.dataType == dataType) {
  5218. return;
  5219. }
  5220. if (dataType == LBitmapData.DATA_CANVAS) {
  5221. s._createCanvas();
  5222. s._canvas.width = s.image.width;
  5223. s._canvas.height = s.image.height;
  5224. s._context.clearRect(0, 0, s._canvas.width, s._canvas.height);
  5225. s._context.drawImage(s.image, 0, 0);
  5226. s.image = s._canvas;
  5227. } else if (dataType == LBitmapData.DATA_IMAGE) {
  5228. s.image = new Image();
  5229. s.image.width = s._canvas.width;
  5230. s.image.height = s._canvas.height;
  5231. s.image.src = s._canvas.toDataURL();
  5232. }
  5233. s.dataType = dataType;
  5234. },
  5235. _createCanvas: function() {
  5236. var s = this;
  5237. if (!s._canvas) {
  5238. s._canvas = document.createElement("canvas");
  5239. s._context = s._canvas.getContext("2d");
  5240. }
  5241. },
  5242. clear: function() {
  5243. var s = this;
  5244. s._createCanvas();
  5245. s._canvas.width = s.image.width;
  5246. if (s.dataType == LBitmapData.DATA_IMAGE) {
  5247. s.image.src = s._canvas.toDataURL();
  5248. }
  5249. },
  5250. setProperties: function(x, y, width, height) {
  5251. var s = this;
  5252. s.x = x;
  5253. s.y = y;
  5254. s.width = width;
  5255. s.height = height;
  5256. s.resize();
  5257. },
  5258. setCoordinate: function(x, y) {
  5259. var s = this;
  5260. s.x = x;
  5261. s.y = y;
  5262. s.resize();
  5263. },
  5264. clone: function() {
  5265. var s = this;
  5266. return new LBitmapData(s.image, s.x, s.y, s.width, s.height, s.dataType);
  5267. },
  5268. _ready: function() {
  5269. var s = this;
  5270. s._dataType = s.dataType;
  5271. s._setDataType(LBitmapData.DATA_CANVAS);
  5272. s._data = s._context.getImageData(s.x, s.y, s.width, s.height);
  5273. },
  5274. _update: function() {
  5275. var s = this;
  5276. s._context.putImageData(s._data, s.x, s.y, 0, 0, s.width, s.height);
  5277. s._setDataType(s._dataType);
  5278. s._data = null;
  5279. },
  5280. getPixel: function(x, y, colorType) {
  5281. var s = this, i, d;
  5282. x = x>>0;
  5283. y = y>>0;
  5284. if (!s._locked) {
  5285. s._ready();
  5286. }
  5287. i = s.width * 4 * y + x * 4;
  5288. d = s._data.data;
  5289. if (!s._locked) {
  5290. s._update();
  5291. }
  5292. if (colorType == "number") {
  5293. return d[i]<<16 | d[i + 1]<<8 | d[i + 2];
  5294. } else {
  5295. return [d[i], d[i + 1], d[i + 2], d[i + 3]];
  5296. }
  5297. },
  5298. setPixel: function(x, y, data) {
  5299. var s = this;
  5300. x = x>>0;
  5301. y = y>>0;
  5302. if (!s._locked) {
  5303. s._ready();
  5304. }
  5305. var d = s._data, i = s.width * 4 * y + x * 4;
  5306. if (typeof data == "object") {
  5307. d.data[i + 0] = data[0];
  5308. d.data[i + 1] = data[1];
  5309. d.data[i + 2] = data[2];
  5310. d.data[i + 3] = data[3];
  5311. } else {
  5312. if (typeof data == "string") {
  5313. data = parseInt(data.replace("#", "0x"));
  5314. }
  5315. d.data[i + 0] = data>>16 & 0xFF;
  5316. d.data[i + 1] = data>>8 & 0xFF;
  5317. d.data[i + 2] = data & 0xFF;
  5318. d.data[i + 3] = 255;
  5319. }
  5320. if (!s._locked) {
  5321. s._update();
  5322. }
  5323. },
  5324. getPixels: function(rect) {
  5325. var s = this, r;
  5326. if (!s._locked) {
  5327. s._ready();
  5328. }
  5329. r = s._context.getImageData(s.x + rect.x, s.y + rect.y, rect.width, rect.height);
  5330. if (!s._locked) {
  5331. s._update();
  5332. }
  5333. return r;
  5334. },
  5335. setPixels: function(rect, data) {
  5336. var s = this, i, j, d, w, sd, x, y;
  5337. if (!s._locked) {
  5338. s._ready();
  5339. }
  5340. d = s._data;
  5341. if (typeof data == "object") {
  5342. w = s._canvas.width;
  5343. for (x = rect.x; x < rect.right; x++) {
  5344. for (y = rect.y; y < rect.bottom; y++) {
  5345. i = w * 4 * (s.y + y) + (s.x + x) * 4;
  5346. j = data.width * 4 * (y - rect.y) + (x - rect.x) * 4;
  5347. d.data[i + 0] = data.data[j + 0];
  5348. d.data[i + 1] = data.data[j + 1];
  5349. d.data[i + 2] = data.data[j + 2];
  5350. d.data[i + 3] = data.data[j + 3];
  5351. }
  5352. }
  5353. } else {
  5354. if (typeof data == "string") {
  5355. data = parseInt(data.replace("#", "0x"));
  5356. }
  5357. data = [data>>16 & 0xFF, data>>8 & 0xFF, data & 0xFF];
  5358. w = s._canvas.width;
  5359. for (x = rect.x; x < rect.right; x++) {
  5360. for (y = rect.y; y < rect.bottom; y++) {
  5361. i = w * 4 * (s.y + y) + (s.x + x) * 4;
  5362. d.data[i + 0] = data[0];
  5363. d.data[i + 1] = data[1];
  5364. d.data[i + 2] = data[2];
  5365. d.data[i + 3] = 255;
  5366. }
  5367. }
  5368. }
  5369. if (!s._locked) {
  5370. s._update();
  5371. }
  5372. },
  5373. putPixels: function(rect, data) {
  5374. var s = this;
  5375. if (s.dataType != LBitmapData.DATA_CANVAS || typeof data != "object") {
  5376. return;
  5377. }
  5378. s._context.putImageData(data, s.x + rect.x, s.y + rect.y, 0, 0, rect.width, rect.height);
  5379. },
  5380. lock: function() {
  5381. var s = this;
  5382. s._locked = true;
  5383. s._ready();
  5384. },
  5385. unlock: function() {
  5386. var s = this;
  5387. s._locked = false;
  5388. s._update();
  5389. },
  5390. draw: function(source, matrix, colorTransform, blendMode, clipRect) {
  5391. var s = this, c, bd = source, x, y, w, h, save = false;
  5392. var _dataType = s.dataType;
  5393. s._setDataType(LBitmapData.DATA_CANVAS);
  5394. if (matrix || colorTransform || blendMode || clipRect) {
  5395. s._context.save();
  5396. save = true;
  5397. }
  5398. if (clipRect) {
  5399. if (!(bd instanceof LBitmapData)) {
  5400. x = y = 0;
  5401. } else {
  5402. x = bd.x;
  5403. y = bd.y;
  5404. }
  5405. bd = new LBitmapData(bd.getDataCanvas(), x + clipRect.x, y + clipRect.y, clipRect.width, clipRect.height, LBitmapData.DATA_CANVAS);
  5406. }
  5407. w = bd.getWidth()>>>0;
  5408. h = bd.getHeight()>>>0;
  5409. if (w == 0 || h == 0) {
  5410. s._setDataType(_dataType);
  5411. return;
  5412. }
  5413. c = bd.getDataCanvas();
  5414. if (colorTransform) {
  5415. bd.colorTransform(new LRectangle(0, 0, w, h), colorTransform);
  5416. c = bd.image;
  5417. }
  5418. if (matrix) {
  5419. s._context.setTransform(matrix.a, matrix.b, matrix.c, matrix.d, matrix.tx, matrix.ty);
  5420. }
  5421. if (blendMode) {
  5422. s._context.globalCompositeOperation = blendMode;
  5423. }
  5424. s._context.drawImage(c, bd.x, bd.y, w, h, 0, 0, w, h);
  5425. if (save) {
  5426. s._context.restore();
  5427. }
  5428. s._setDataType(_dataType);
  5429. s.resize();
  5430. },
  5431. getDataCanvas: function() {
  5432. var s = this;
  5433. var _dataType = s.dataType;
  5434. s._setDataType(LBitmapData.DATA_CANVAS);
  5435. s._setDataType(_dataType);
  5436. return s._canvas;
  5437. },
  5438. getWidth: function() {
  5439. return this.width;
  5440. },
  5441. getHeight: function() {
  5442. return this.height;
  5443. },
  5444. resize: function() {
  5445. var s = this, w = s.image.width - s.x, h = s.image.height - s.y;
  5446. s.width = s.width < w ? s.width : w;
  5447. s.height = s.height < h ? s.height : h;
  5448. },
  5449. colorTransform: function(rect, colorTransform) {
  5450. var s = this;
  5451. if (s.dataType != LBitmapData.DATA_CANVAS) {
  5452. return;
  5453. }
  5454. var x = rect.x>>0, y = rect.y>>0, w = rect.width>>0, h = rect.height>>0;
  5455. var img = s._context.getImageData(s.x + rect.x, s.y + rect.y, rect.width, rect.height);
  5456. var data = img.data;
  5457. for (var i = 0, l = data.length; i < l; i += 4) {
  5458. var r = i, g = i + 1, b = i + 2, a = i + 3;
  5459. data[r] = data[r] * colorTransform.redMultiplier + colorTransform.redOffset;
  5460. data[g] = data[g] * colorTransform.greenMultiplier + colorTransform.greenOffset;
  5461. data[b] = data[b] * colorTransform.blueMultiplier + colorTransform.blueOffset;
  5462. data[a] = data[a] * colorTransform.alphaMultiplier + colorTransform.alphaOffset;
  5463. }
  5464. s._context.putImageData(img, s.x + rect.x, s.y + rect.y, 0, 0, rect.width, rect.height);
  5465. },
  5466. copyPixels: function(sourceBitmapData, sourceRect, destPoint) {
  5467. var s = this, left, top, width, height, bd = sourceBitmapData;
  5468. if (s.dataType != LBitmapData.DATA_CANVAS) {
  5469. return;
  5470. }
  5471. left = bd.x;
  5472. top = bd.y;
  5473. width = bd.width;
  5474. height = bd.height;
  5475. bd.setProperties(sourceRect.x + bd.x, sourceRect.y + bd.y, sourceRect.width, sourceRect.height);
  5476. s._context.drawImage(bd.image, bd.x, bd.y, bd.width, bd.height, destPoint.x, destPoint.y, bd.width, bd.height);
  5477. bd.x = left;
  5478. bd.y = top;
  5479. bd.width = width;
  5480. bd.height = height;
  5481. }
  5482. };
  5483. for (var k in p) {
  5484. LBitmapData.prototype[k] = p[k];
  5485. }
  5486. return LBitmapData;
  5487. })();
  5488. var LDropShadowFilter = (function() {
  5489. function LDropShadowFilter(distance, angle, color, blur) {
  5490. var s = this;
  5491. LExtends(s, LObject, []);
  5492. s.type = "LDropShadowFilter";
  5493. s.distance = distance ? distance : 0;
  5494. s.angle = angle ? angle : 0;
  5495. s.shadowColor = color ? color : "#000000";
  5496. s.shadowBlur = blur ? blur : 20;
  5497. s.setShadowOffset();
  5498. }
  5499. var p = {
  5500. setShadowOffset: function() {
  5501. var s = this;
  5502. var a = s.angle * Math.PI / 180;
  5503. s.shadowOffsetX = s.distance * Math.cos(a);
  5504. s.shadowOffsetY = s.distance * Math.sin(a);
  5505. },
  5506. ll_show: function() {
  5507. var s = this, c = LGlobal.canvas;
  5508. c.shadowColor = s.shadowColor;
  5509. c.shadowBlur = s.shadowBlur;
  5510. c.shadowOffsetX = s.shadowOffsetX;
  5511. c.shadowOffsetY = s.shadowOffsetY;
  5512. },
  5513. setDistance: function(distance) {
  5514. this.distance = distance;
  5515. this.setShadowOffset();
  5516. },
  5517. setAngle: function(angle) {
  5518. this.angle = angle;
  5519. this.setShadowOffset();
  5520. },
  5521. setColor: function(color) {
  5522. this.shadowColor = color;
  5523. },
  5524. setBlur: function(blur) {
  5525. this.shadowBlur = blur;
  5526. }
  5527. };
  5528. for (var k in p) {
  5529. LDropShadowFilter.prototype[k] = p[k];
  5530. }
  5531. return LDropShadowFilter;
  5532. })();
  5533. var LAnimation = (function() {
  5534. function LAnimation(layer, data, list) {
  5535. var s = this;
  5536. LExtends(s, LSprite, []);
  5537. s.type = "LAnimation";
  5538. s.rowIndex = 0;
  5539. s.colIndex = 0;
  5540. s._ll_stepIndex = 0;
  5541. s._ll_stepArray = [];
  5542. s.mode = 1;
  5543. s.isMirror = false;
  5544. if (Array.isArray(data)) {
  5545. s.bitmapList = data;
  5546. } else {
  5547. s.bitmapList = [data];
  5548. }
  5549. s.bitmap = new LBitmap(s.bitmapList[0]);
  5550. s.imageArray = list;
  5551. s.addChild(s.bitmap);
  5552. if (layer != null) {
  5553. layer.addChild(s);
  5554. }
  5555. s.onframe();
  5556. s.colIndex = 0;
  5557. }
  5558. var p = {
  5559. setAction: function(rowIndex, colIndex, mode, isMirror) {
  5560. var s = this, changed = false;
  5561. if (rowIndex != null && rowIndex >= 0 && rowIndex < s.imageArray.length) {
  5562. s.rowIndex = rowIndex;
  5563. changed = true;
  5564. }
  5565. if (colIndex != null && colIndex >= 0 && colIndex < s.imageArray[rowIndex].length) {
  5566. s.colIndex = colIndex;
  5567. changed = true;
  5568. }
  5569. if (mode != null) {
  5570. s.mode = mode;
  5571. changed = true;
  5572. }
  5573. if (isMirror != null) {
  5574. s.isMirror = isMirror;
  5575. if (s.isMirror) {
  5576. s.bitmap.x = s.bitmap.getWidth();
  5577. s.bitmap.scaleX =- 1 * Math.abs(s.bitmap.scaleX);
  5578. } else {
  5579. s.bitmap.x = 0;
  5580. s.bitmap.scaleX = Math.abs(s.bitmap.scaleX);
  5581. }
  5582. changed = true;
  5583. }
  5584. if (changed) {
  5585. s._ll_stepIndex = 0;
  5586. }
  5587. },
  5588. getAction: function() {
  5589. var s = this;
  5590. return [s.rowIndex, s.colIndex, s.mode, s.isMirror];
  5591. },
  5592. onframe: function() {
  5593. var s = this, arr, sx = 0, stepFrame = null;
  5594. if (s.colIndex >= s.imageArray[s.rowIndex].length) {
  5595. s.colIndex = 0;
  5596. }
  5597. arr = s.imageArray[s.rowIndex][s.colIndex];
  5598. if (s._ll_stepArray[s.rowIndex] && s._ll_stepArray[s.rowIndex][s.colIndex]) {
  5599. stepFrame = s._ll_stepArray[s.rowIndex][s.colIndex];
  5600. } else {
  5601. stepFrame = 0;
  5602. }
  5603. if (s._ll_stepIndex == 0) {
  5604. if (typeof arr.dataIndex == "number" && Array.isArray(s.bitmapList) && arr.dataIndex < s.bitmapList.length) {
  5605. s.bitmap.bitmapData = s.bitmapList[arr.dataIndex];
  5606. }
  5607. if (arr.script) {
  5608. for (i = 0; i < arr.script.length; i++) {
  5609. obj = arr.script[i];
  5610. l = s.ll_labelList[obj.name];
  5611. if (l && l.rowIndex == s.rowIndex && l.colIndex == s.colIndex && l.mode == s.mode && l.isMirror == (s.bitmap.scaleX==-1)) {
  5612. obj.func(s, obj.params);
  5613. }
  5614. }
  5615. }
  5616. if (typeof arr.width != UNDEFINED && typeof arr.height != UNDEFINED) {
  5617. s.bitmap.bitmapData.setProperties(arr.x, arr.y, arr.width, arr.height);
  5618. } else {
  5619. s.bitmap.bitmapData.setCoordinate(arr.x, arr.y);
  5620. }
  5621. if (typeof arr.sx != UNDEFINED) {
  5622. sx = arr.sx;
  5623. }
  5624. if (typeof arr.sy != UNDEFINED) {
  5625. s.bitmap.y = arr.sy;
  5626. }
  5627. if (typeof arr.mirror != UNDEFINED) {
  5628. s.bitmap.rotateCenter = false;
  5629. s.bitmap.scaleX = arr.mirror?-1 : 1;
  5630. }
  5631. s.bitmap.x = sx + (s.bitmap.scaleX == 1 ? 0 : s.bitmap.getWidth());
  5632. }
  5633. if (s._ll_stepIndex++<stepFrame) {
  5634. return;
  5635. }
  5636. s._ll_stepIndex = 0;
  5637. s.colIndex += s.mode;
  5638. if (s.colIndex >= s.imageArray[s.rowIndex].length || s.colIndex < 0) {
  5639. s.colIndex = s.mode > 0 ? 0 : s.imageArray[s.rowIndex].length - 1;
  5640. if (s.constructor.name == "LAnimationTimeline") {
  5641. s._send_complete = true;
  5642. } else {
  5643. s.dispatchEvent(LEvent.COMPLETE);
  5644. }
  5645. }
  5646. },
  5647. clone: function() {
  5648. var s = this, a = new LAnimation(null, s.bitmap.bitmapData, s.imageArray.slice(0));
  5649. a.copyProperty(s);
  5650. a.childList.length = 0;
  5651. a.bitmap = s.bitmap.clone();
  5652. a.addChild(a.bitmap);
  5653. return a;
  5654. }
  5655. };
  5656. for (var k in p) {
  5657. LAnimation.prototype[k] = p[k];
  5658. }
  5659. return LAnimation;
  5660. })();
  5661. var LAnimationTimeline = (function() {
  5662. function LAnimationTimeline(data, list) {
  5663. var s = this;
  5664. LExtends(s, LAnimation, [null, data, list]);
  5665. s.type = "LAnimationTimeline";
  5666. s.speed = 0;
  5667. s._speedIndex = 0;
  5668. s.ll_labelList = {};
  5669. for (var i = 0, sublist, j, child; i < list.length; i++) {
  5670. sublist = list[i];
  5671. for (j = 0; j < sublist.length; j++) {
  5672. child = sublist[j];
  5673. if (child.label) {
  5674. s.setLabel(child.label, i, j, 1, child.isMirror ? true : false);
  5675. }
  5676. }
  5677. }
  5678. s.addEventListener(LEvent.ENTER_FRAME, s._ll_onframe);
  5679. };
  5680. var p = {
  5681. clone: function() {
  5682. var s = this, k, o, a = new LAnimation(null, s.bitmap.bitmapData, s.imageArray.slice(0));
  5683. a.copyProperty(s);
  5684. a.childList.length = 0;
  5685. a.bitmap = s.bitmap.clone();
  5686. a.addChild(a.bitmap);
  5687. for (k in s.ll_labelList) {
  5688. o = s.ll_labelList[k];
  5689. a.ll_labelList[k] = {
  5690. rowIndex: o.rowIndex,
  5691. colIndex: o.colIndex,
  5692. mode: o.mode,
  5693. isMirror: o.isMirror
  5694. };
  5695. }
  5696. return a;
  5697. },
  5698. setFrameSpeedAt: function(rowIndex, colIndex, speed) {
  5699. var s = this;
  5700. if (!s._ll_stepArray[rowIndex]) {
  5701. s._ll_stepArray[rowIndex] = [];
  5702. }
  5703. s._ll_stepArray[rowIndex][colIndex] = speed;
  5704. },
  5705. _ll_onframe: function(event) {
  5706. var self = event.target;
  5707. if (self._ll_stop) {
  5708. return;
  5709. }
  5710. if (self._speedIndex++<self.speed) {
  5711. return;
  5712. }
  5713. if (self._send_complete) {
  5714. self.dispatchEvent(LEvent.COMPLETE);
  5715. self._send_complete = false;
  5716. if (self._ll_stop) {
  5717. return;
  5718. }
  5719. }
  5720. self._speedIndex = 0;
  5721. self.onframe();
  5722. },
  5723. setLabel: function(name, _rowIndex, _colIndex, _mode, _isMirror) {
  5724. this.ll_labelList[name] = {
  5725. rowIndex: _rowIndex,
  5726. colIndex: _colIndex,
  5727. mode: (typeof _mode == UNDEFINED ? 1 : _mode),
  5728. isMirror: (typeof _isMirror == UNDEFINED ? false : _isMirror)
  5729. };
  5730. },
  5731. play: function() {
  5732. this._ll_stop = false;
  5733. },
  5734. stop: function() {
  5735. this._ll_stop = true;
  5736. },
  5737. gotoAndPlay: function(name) {
  5738. var s = this, l = s.ll_labelList[name];
  5739. s.setAction(l.rowIndex, l.colIndex, l.mode, l.isMirror);
  5740. s.onframe();
  5741. s.play();
  5742. },
  5743. gotoAndStop: function(name) {
  5744. var s = this, l = s.ll_labelList[name];
  5745. s.setAction(l.rowIndex, l.colIndex, l.mode, l.isMirror);
  5746. s.onframe();
  5747. s.stop();
  5748. },
  5749. addFrameScript: function(name, func, params) {
  5750. var l = this.ll_labelList[name];
  5751. var arr = this.imageArray[l.rowIndex][l.colIndex];
  5752. if (!arr.script) {
  5753. arr.script = [];
  5754. }
  5755. arr.script.push({
  5756. func: func,
  5757. params: params,
  5758. name: name
  5759. });
  5760. },
  5761. removeFrameScript: function(name) {
  5762. var l = this.ll_labelList[name], obj, script, i;
  5763. script = this.imageArray[l.rowIndex][l.colIndex].script;
  5764. if (!script) {
  5765. return;
  5766. }
  5767. for (i = 0; i < script.length; i++) {
  5768. obj = script[i];
  5769. if (obj.name == name) {
  5770. script.splice(i, 1);
  5771. break;
  5772. }
  5773. }
  5774. }
  5775. };
  5776. for (var k in p) {
  5777. LAnimationTimeline.prototype[k] = p[k];
  5778. }
  5779. return LAnimationTimeline;
  5780. })();
  5781. var LLoadManage = (function() {
  5782. function LoadManage() {
  5783. this.llname = "ll.file.";
  5784. this.llload = "ll.load.";
  5785. }
  5786. LoadManage.prototype = {
  5787. load: function(l, u, c) {
  5788. var s = this;
  5789. if (!l || l.length == 0) {
  5790. c([]);
  5791. return;
  5792. }
  5793. s.list = l, s.onupdate = u, s.oncomplete = c;
  5794. s.loader = s, s.index = 0, s.loadIndex = 0, s.result = [], s.lresult = [];
  5795. s.loadInit();
  5796. },
  5797. loadInit: function() {
  5798. var s = this;
  5799. if (s.index >= s.list.length) {
  5800. return;
  5801. }
  5802. s.loadIndex = 0;
  5803. s.loadStart();
  5804. s.reloadtime = setTimeout(s.loadInit.bind(s), 10000);
  5805. },
  5806. loadStart: function() {
  5807. var s = this, d, ph, phs, ext;
  5808. if (s.loadIndex >= s.list.length) {
  5809. return;
  5810. }
  5811. d = s.list[s.loadIndex];
  5812. if (!d.name) {
  5813. d.name = s.llname + s.loadIndex;
  5814. }
  5815. if (!s.lresult[s.llload + d.name]) {
  5816. if (!d["type"]) {
  5817. ext = getExtension(d.path);
  5818. if (ext == "txt") {
  5819. d["type"] = LURLLoader.TYPE_TEXT;
  5820. } else if (ext == "js") {
  5821. d["type"] = LURLLoader.TYPE_JS;
  5822. } else if ((new Array("mp3", "ogg", "wav", "m4a")).indexOf(ext) >= 0) {
  5823. d["type"] = LSound.TYPE_SOUND;
  5824. }
  5825. }
  5826. if (d["type"] == LURLLoader.TYPE_TEXT || d["type"] == LURLLoader.TYPE_JS) {
  5827. s.loader = new LURLLoader();
  5828. s.loader.name = d.name;
  5829. s.loader.addEventListener(LEvent.COMPLETE, s.loadComplete.bind(s));
  5830. s.loader.load(s.url(d.path), d["type"]);
  5831. } else if (d["type"] == LSound.TYPE_SOUND) {
  5832. s.loader = new LSound();
  5833. s.loader.name = d.name;
  5834. s.loader.addEventListener(LEvent.COMPLETE, s.loadComplete.bind(s));
  5835. s.loader.load(d.path);
  5836. } else {
  5837. s.loader = new LLoader();
  5838. s.loader.name = d.name;
  5839. s.loader.addEventListener(LEvent.COMPLETE, s.loadComplete.bind(s));
  5840. s.loader.load(s.url(d.path), LLoader.TYPE_BITMAPDATE);
  5841. }
  5842. }
  5843. s.loadIndex++;
  5844. s.loadStart();
  5845. },
  5846. loadComplete: function(e) {
  5847. var s = this;
  5848. if (e && e.currentTarget && e.currentTarget.name) {
  5849. e.currentTarget.removeEventListener(LEvent.COMPLETE, s.loadComplete);
  5850. if (e.currentTarget.name.indexOf(s.llname) >= 0) {
  5851. e.target = 1;
  5852. }
  5853. if (s.lresult[s.llload + e.currentTarget.name]) {
  5854. return;
  5855. }
  5856. s.result[e.currentTarget.name] = e.target;
  5857. s.lresult[s.llload + e.currentTarget.name] = 1;
  5858. }
  5859. s.index++;
  5860. if (s.onupdate) {
  5861. s.onupdate(Math.floor(s.index * 100 / s.list.length));
  5862. }
  5863. if (s.index >= s.list.length) {
  5864. if (s.reloadtime) {
  5865. clearTimeout(s.reloadtime);
  5866. }
  5867. s.loader = null;
  5868. var r = s.result;
  5869. LGlobal.forceRefresh = true;
  5870. s.oncomplete(r);
  5871. }
  5872. },
  5873. url: function(u) {
  5874. if (!LGlobal.traceDebug) {
  5875. return u;
  5876. }
  5877. return u + (u.indexOf('?') >= 0 ? '&' : '?') + 't=' + (new Date()).getTime();
  5878. }
  5879. };
  5880. return new LoadManage();
  5881. })();
  5882. var LEasing = {
  5883. None: {
  5884. easeIn: function(t, b, c, d) {
  5885. return b + t * c / d;
  5886. },
  5887. easeOut: function(t, b, c, d) {
  5888. return b + t * c / d;
  5889. },
  5890. easeInOut: function(t, b, c, d) {
  5891. return b + t * c / d;
  5892. }
  5893. },
  5894. Quad: {
  5895. easeIn: function(t, b, c, d) {
  5896. return c * (t/=d) * t + b;
  5897. },
  5898. easeOut: function(t, b, c, d) {
  5899. return - c * (t/=d) * (t - 2) + b;
  5900. },
  5901. easeInOut: function(t, b, c, d) {
  5902. if ((t/=d / 2) < 1) {
  5903. return c / 2 * t * t + b;
  5904. }
  5905. return - c / 2 * ((--t) * (t - 2) - 1) + b;
  5906. }
  5907. },
  5908. Cubic: {
  5909. easeIn: function(t, b, c, d) {
  5910. return c * (t/=d) * t * t + b;
  5911. },
  5912. easeOut: function(t, b, c, d) {
  5913. return c * ((t = t / d - 1) * t * t + 1) + b;
  5914. },
  5915. easeInOut: function(t, b, c, d) {
  5916. if ((t/=d / 2) < 1) {
  5917. return c / 2 * t * t * t + b;
  5918. }
  5919. return c / 2 * ((t -= 2) * t * t + 2) + b;
  5920. }
  5921. },
  5922. Quart: {
  5923. easeIn: function(t, b, c, d) {
  5924. return c * (t/=d) * t * t * t + b;
  5925. },
  5926. easeOut: function(t, b, c, d) {
  5927. return - c * ((t = t / d - 1) * t * t * t - 1) + b;
  5928. },
  5929. easeInOut: function(t, b, c, d) {
  5930. if ((t/=d / 2) < 1) {
  5931. return c / 2 * t * t * t * t + b;
  5932. }
  5933. return - c / 2 * ((t -= 2) * t * t * t - 2) + b;
  5934. }
  5935. },
  5936. Quint: {
  5937. easeIn: function(t, b, c, d) {
  5938. return c * (t/=d) * t * t * t * t + b;
  5939. },
  5940. easeOut: function(t, b, c, d) {
  5941. return c * ((t = t / d - 1) * t * t * t * t + 1) + b;
  5942. },
  5943. easeInOut: function(t, b, c, d) {
  5944. if ((t/=d / 2) < 1) {
  5945. return c / 2 * t * t * t * t * t + b;
  5946. }
  5947. return c / 2 * ((t -= 2) * t * t * t * t + 2) + b;
  5948. }
  5949. },
  5950. Sine: {
  5951. easeIn: function(t, b, c, d) {
  5952. return - c * Math.cos(t / d * (Math.PI / 2)) + c + b;
  5953. },
  5954. easeOut: function(t, b, c, d) {
  5955. return c * Math.sin(t / d * (Math.PI / 2)) + b;
  5956. },
  5957. easeInOut: function(t, b, c, d) {
  5958. return - c / 2 * (Math.cos(Math.PI * t / d) - 1) + b;
  5959. }
  5960. },
  5961. Strong: {
  5962. easeIn: function(t, b, c, d) {
  5963. return c * (t/=d) * t * t * t * t + b;
  5964. },
  5965. easeOut: function(t, b, c, d) {
  5966. return c * ((t = t / d - 1) * t * t * t * t + 1) + b;
  5967. },
  5968. easeInOut: function(t, b, c, d) {
  5969. if ((t/=d / 2) < 1) {
  5970. return c / 2 * t * t * t * t * t + b;
  5971. }
  5972. return c / 2 * ((t -= 2) * t * t * t * t + 2) + b;
  5973. }
  5974. },
  5975. Expo: {
  5976. easeIn: function(t, b, c, d) {
  5977. return (t == 0) ? b : c * Math.pow(2, 10 * (t / d - 1)) + b;
  5978. },
  5979. easeOut: function(t, b, c, d) {
  5980. return (t == d) ? b + c : c * ( - Math.pow(2, - 10 * t / d) + 1) + b;
  5981. },
  5982. easeInOut: function(t, b, c, d) {
  5983. if (t == 0) {
  5984. return b;
  5985. }
  5986. if (t == d) {
  5987. return b + c;
  5988. }
  5989. if ((t/=d / 2) < 1) {
  5990. return c / 2 * Math.pow(2, 10 * (t - 1)) + b;
  5991. }
  5992. return c / 2 * ( - Math.pow(2, - 10*--t) + 2) + b;
  5993. }
  5994. },
  5995. Circ: {
  5996. easeIn: function(t, b, c, d) {
  5997. return - c * (Math.sqrt(1 - (t/=d) * t) - 1) + b;
  5998. },
  5999. easeOut: function(t, b, c, d) {
  6000. return c * Math.sqrt(1 - (t = t / d - 1) * t) + b;
  6001. },
  6002. easeInOut: function(t, b, c, d) {
  6003. if ((t/=d / 2) < 1) {
  6004. return - c / 2 * (Math.sqrt(1 - t * t) - 1) + b;
  6005. }
  6006. return c / 2 * (Math.sqrt(1 - (t -= 2) * t) + 1) + b;
  6007. }
  6008. },
  6009. Elastic: {
  6010. easeIn: function(t, b, c, d, a, p) {
  6011. var s;
  6012. if (t == 0) {
  6013. return b;
  6014. }
  6015. if ((t/=d) == 1) {
  6016. return b + c;
  6017. }
  6018. if (!p) {
  6019. p = d * .3;
  6020. }
  6021. if (!a || a < Math.abs(c)) {
  6022. a = c;
  6023. s = p / 4;
  6024. } else {
  6025. s = p / (2 * Math.PI) * Math.asin(c / a);
  6026. }
  6027. return - (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b;
  6028. },
  6029. easeOut: function(t, b, c, d, a, p) {
  6030. var s;
  6031. if (t == 0) {
  6032. return b;
  6033. }
  6034. if ((t/=d) == 1) {
  6035. return b + c;
  6036. }
  6037. if (!p) {
  6038. p = d * .3;
  6039. }
  6040. if (!a || a < Math.abs(c)) {
  6041. a = c;
  6042. s = p / 4;
  6043. } else {
  6044. s = p / (2 * Math.PI) * Math.asin(c / a);
  6045. }
  6046. return (a * Math.pow(2, - 10 * t) * Math.sin((t * d - s) * (2 * Math.PI) / p) + c + b);
  6047. },
  6048. easeInOut: function(t, b, c, d, a, p) {
  6049. var s;
  6050. if (t == 0) {
  6051. return b;
  6052. }
  6053. if ((t/=d / 2) == 2) {
  6054. return b + c;
  6055. }
  6056. if (!p) {
  6057. p = d * (.3 * 1.5);
  6058. }
  6059. if (!a || a < Math.abs(c)) {
  6060. a = c;
  6061. s = p / 4;
  6062. } else {
  6063. s = p / (2 * Math.PI) * Math.asin(c / a);
  6064. }
  6065. if (t < 1) {
  6066. return - .5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b;
  6067. }
  6068. return a * Math.pow(2, - 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p) * .5 + c + b;
  6069. }
  6070. },
  6071. Back: {
  6072. easeIn: function(t, b, c, d, s) {
  6073. if (typeof s == UNDEFINED) {
  6074. s = 1.70158;
  6075. }
  6076. return c * (t/=d) * t * ((s + 1) * t - s) + b;
  6077. },
  6078. easeOut: function(t, b, c, d, s) {
  6079. if (typeof s == UNDEFINED) {
  6080. s = 1.70158;
  6081. }
  6082. return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;
  6083. },
  6084. easeInOut: function(t, b, c, d, s) {
  6085. if (typeof s == UNDEFINED) {
  6086. s = 1.70158;
  6087. }
  6088. if ((t/=d / 2) < 1) {
  6089. return c / 2 * (t * t * (((s*=(1.525)) + 1) * t - s)) + b;
  6090. }
  6091. return c / 2 * ((t -= 2) * t * (((s*=(1.525)) + 1) * t + s) + 2) + b;
  6092. }
  6093. },
  6094. Bounce: {
  6095. easeIn: function(t, b, c, d) {
  6096. return c - LEasing.Bounce.easeOut(d - t, 0, c, d) + b;
  6097. },
  6098. easeOut: function(t, b, c, d) {
  6099. if ((t/=d) < (1 / 2.75)) {
  6100. return c * (7.5625 * t * t) + b;
  6101. } else if (t < (2 / 2.75)) {
  6102. return c * (7.5625 * (t -= (1.5 / 2.75)) * t + .75) + b;
  6103. } else if (t < (2.5 / 2.75)) {
  6104. return c * (7.5625 * (t -= (2.25 / 2.75)) * t + .9375) + b;
  6105. } else {
  6106. return c * (7.5625 * (t -= (2.625 / 2.75)) * t + .984375) + b;
  6107. }
  6108. },
  6109. easeInOut: function(t, b, c, d) {
  6110. if (t < d / 2) {
  6111. return LEasing.Bounce.easeIn(t * 2, 0, c, d) * .5 + b;
  6112. }
  6113. return LEasing.Bounce.easeOut(t * 2 - d, 0, c, d) * .5 + c * .5 + b;
  6114. }
  6115. }
  6116. };
  6117. var Quad = LEasing.Quad, Cubic = LEasing.Cubic, Quart = LEasing.Quart, Quint = LEasing.Quint, Sine = LEasing.Sine, Strong = LEasing.Strong, Expo = LEasing.Expo, Circ = LEasing.Circ, Elastic = LEasing.Elastic, Back = LEasing.Back, Bounce = LEasing.Bounce;
  6118. var LTweenLiteTimeline;
  6119. var LTweenLite = (function() {
  6120. function LTweenLiteChild($target, $duration, $vars) {
  6121. var s = this;
  6122. LExtends(s, LObject, []);
  6123. s.type = "LTweenLiteChild";
  6124. s.toNew = [];
  6125. s.init($target, $duration, $vars);
  6126. }
  6127. var p = {
  6128. init: function($target, $duration, $vars) {
  6129. var s = this, k = null;
  6130. if (typeof $vars["tweenTimeline"] == UNDEFINED) {
  6131. $vars["tweenTimeline"] = LTweenLite.TYPE_FRAME;
  6132. }
  6133. s.target = $target;
  6134. s.duration = $duration || 0.001;
  6135. s.vars = $vars;
  6136. s.delay = s.vars.delay || 0;
  6137. if (s.vars["tweenTimeline"] == LTweenLite.TYPE_TIMER) {
  6138. s.currentTime = (new Date()).getTime() / 1000;
  6139. s.initTime = s.currentTime;
  6140. s.startTime = s.initTime + s.delay;
  6141. } else {
  6142. s.currentTime = 0;
  6143. s.duration*=1000;
  6144. s.currentTime -= s.delay * 1000;
  6145. }
  6146. s.combinedTimeScale = s.vars.timeScale || 1;
  6147. s.active = s.duration == 0 && s.delay == 0;
  6148. s.varsto = {};
  6149. s.varsfrom = {};
  6150. s.stop = false;
  6151. if (typeof(s.vars.ease) != "function") {
  6152. s.vars.ease = LEasing.None.easeIn;
  6153. }
  6154. s.ease = s.vars.ease;
  6155. delete s.vars.ease;
  6156. if (s.vars.onComplete) {
  6157. s.onComplete = s.vars.onComplete;
  6158. delete s.vars.onComplete;
  6159. }
  6160. if (s.vars.onUpdate) {
  6161. s.onUpdate = s.vars.onUpdate;
  6162. delete s.vars.onUpdate;
  6163. }
  6164. if (s.vars.onStart) {
  6165. s.onStart = s.vars.onStart;
  6166. delete s.vars.onStart;
  6167. }
  6168. for (k in s.vars) {
  6169. s.varsto[k] = s.vars[k];
  6170. s.varsfrom[k] = s.target[k];
  6171. }
  6172. },
  6173. pause: function() {
  6174. this.stop = true;
  6175. },
  6176. resume: function() {
  6177. this.stop = false;
  6178. },
  6179. tween: function() {
  6180. var s = this, tweentype;
  6181. var type_timer = (s.vars["tweenTimeline"] == LTweenLite.TYPE_TIMER);
  6182. if (type_timer) {
  6183. var time = (new Date()).getTime() / 1000, etime = time - s.startTime;
  6184. if (etime < 0) {
  6185. return;
  6186. }
  6187. } else {
  6188. if (s.stop) {
  6189. return;
  6190. }
  6191. s.currentTime += LGlobal.speed;
  6192. if (s.currentTime < 0) {
  6193. return;
  6194. }
  6195. }
  6196. for (tweentype in s.varsto) {
  6197. if (tweentype == "tweenTimeline") {
  6198. continue;
  6199. }
  6200. if (type_timer) {
  6201. s.target[tweentype] = s.ease(etime, s.varsfrom[tweentype], s.varsto[tweentype] - s.varsfrom[tweentype], s.duration);
  6202. } else {
  6203. s.target[tweentype] = s.ease(s.currentTime, s.varsfrom[tweentype], s.varsto[tweentype] - s.varsfrom[tweentype], s.duration);
  6204. }
  6205. }
  6206. if (s.onStart) {
  6207. s._dispatchEvent(s.onStart);
  6208. delete s.onStart;
  6209. }
  6210. var e;
  6211. if (type_timer) {
  6212. e = (etime >= s.duration);
  6213. } else {
  6214. e = (s.currentTime >= s.duration);
  6215. }
  6216. if (e) {
  6217. for (tweentype in s.varsto) {
  6218. s.target[tweentype] = s.varsto[tweentype];
  6219. }
  6220. if (s.onComplete) {
  6221. s._dispatchEvent(s.onComplete);
  6222. }
  6223. return true;
  6224. } else if (s.onUpdate) {
  6225. s._dispatchEvent(s.onUpdate);
  6226. }
  6227. return false;
  6228. },
  6229. _dispatchEvent: function(f) {
  6230. var s = this;
  6231. s.target.target = s.target;
  6232. s.target.currentTarget = s;
  6233. f(s.target);
  6234. delete s.target.currentTarget;
  6235. delete s.target.target;
  6236. },
  6237. to: function($target, $duration, $vars) {
  6238. var s = this;
  6239. s.toNew.push({
  6240. target: $target,
  6241. duration: $duration,
  6242. vars: $vars
  6243. });
  6244. return s;
  6245. },
  6246. keep: function() {
  6247. var s = this, t, vs, k;
  6248. if (s.toNew.length > 0) {
  6249. t = s.toNew.shift();
  6250. if (t.vars.loop) {
  6251. s.loop = true;
  6252. }
  6253. if (s.loop) {
  6254. vs = {};
  6255. for (k in t.vars) {
  6256. vs[k] = t.vars[k];
  6257. }
  6258. s.to(t.target, t.duration, vs);
  6259. }
  6260. s.init(t.target, t.duration, t.vars);
  6261. return true;
  6262. }
  6263. return false;
  6264. }
  6265. };
  6266. for (var k in p) {
  6267. LTweenLiteChild.prototype[k] = p[k];
  6268. }
  6269. function LTweenLite() {
  6270. var s = this;
  6271. LExtends(s, LObject, []);
  6272. s.type = "LTweenLite";
  6273. s.tweens = [];
  6274. }
  6275. LTweenLite.TYPE_FRAME = "type_frame";
  6276. LTweenLite.TYPE_TIMER = "type_timer";
  6277. p = {
  6278. count: function() {
  6279. return this.tweens.length;
  6280. },
  6281. ll_show: function() {
  6282. var s = this;
  6283. var i, length = s.tweens.length, t;
  6284. for (i = 0; i < length; i++) {
  6285. t = s.tweens[i];
  6286. if (t && t.tween && t.tween()) {
  6287. s.tweens.splice(i, 1);
  6288. i--;
  6289. length = s.tweens.length;
  6290. if (t.keep()) {
  6291. s.add(t);
  6292. }
  6293. }
  6294. }
  6295. },
  6296. to: function($target, $duration, $vars) {
  6297. if (!$target) {
  6298. return;
  6299. }
  6300. var s = this;
  6301. var tween = new LTweenLiteChild({}, 0, {});
  6302. s.tweens.push(tween);
  6303. tween.to($target, $duration, $vars);
  6304. return tween;
  6305. },
  6306. add: function(tween) {
  6307. this.tweens.push(tween);
  6308. },
  6309. remove: function(tween) {
  6310. var s = this;
  6311. if (typeof tween == UNDEFINED) {
  6312. return;
  6313. }
  6314. for (var i = 0, l = s.tweens.length; i < l; i++) {
  6315. if (tween.objectIndex == s.tweens[i].objectIndex) {
  6316. s.tweens.splice(i, 1);
  6317. break;
  6318. }
  6319. }
  6320. },
  6321. removeAll: function() {
  6322. this.tweens.splice(0, this.tweens.length);
  6323. },
  6324. pauseAll: function() {
  6325. for (var i = 0, l = this.tweens.length; i < l; i++) {
  6326. this.tweens[i].pause();
  6327. }
  6328. },
  6329. resumeAll: function() {
  6330. for (var i = 0, l = this.tweens.length; i < l; i++) {
  6331. this.tweens[i].resume();
  6332. }
  6333. }
  6334. };
  6335. for (var k in p) {
  6336. LTweenLite.prototype[k] = p[k];
  6337. }
  6338. LTweenLiteTimeline = new LTweenLite();
  6339. LGlobal.childList.push(LTweenLiteTimeline);
  6340. var tween = new LTweenLite();
  6341. tween.TYPE_FRAME = LTweenLite.TYPE_FRAME;
  6342. tween.TYPE_TIMER = LTweenLite.TYPE_TIMER;
  6343. LGlobal.childList.push(tween);
  6344. return tween;
  6345. })();
  6346. var LAjax = (function() {
  6347. function LAjax() {
  6348. this.responseType = null;
  6349. }
  6350. LAjax.prototype = {
  6351. TEXT: "text",
  6352. JSON: "json",
  6353. ARRAY_BUFFER: "arraybuffer",
  6354. BLOB: "blob",
  6355. get: function(url, data, oncomplete, onerror) {
  6356. this.getRequest("GET", url, data, oncomplete, onerror);
  6357. },
  6358. post: function(url, data, oncomplete, onerror) {
  6359. this.getRequest("POST", url, data, oncomplete, onerror);
  6360. },
  6361. getRequest: function(t, url, d, oncomplete, err) {
  6362. var s = this, k, data = "", a = "";
  6363. s.err = err;
  6364. var ajax = s.getHttp();
  6365. if (!ajax) {
  6366. return;
  6367. }
  6368. if (d) {
  6369. for (k in d) {
  6370. data += (a + k + "=" + d[k]);
  6371. a = "&";
  6372. }
  6373. }
  6374. if (t.toLowerCase() == "get" && data.length > 0) {
  6375. url += ((url.indexOf('?') >= 0 ? '&' : '?') + data);
  6376. data = null;
  6377. }
  6378. ajax.open(t, url, true);
  6379. if (s.responseType) {
  6380. if (s.responseType == s.JSON) {
  6381. try {
  6382. ajax.responseType = s.responseType;
  6383. } catch (e) {
  6384. ajax.responseType = s.TEXT;
  6385. ajax._responseType = "json";
  6386. }
  6387. } else {
  6388. ajax.responseType = s.responseType;
  6389. }
  6390. s.responseType = s.TEXT;
  6391. }
  6392. ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  6393. ajax.onreadystatechange = function() {
  6394. if (ajax.readyState == 4) {
  6395. if (ajax.status >= 200 && ajax.status < 300 || ajax.status === 304) {
  6396. if (oncomplete) {
  6397. if (ajax._responseType == s.JSON) {
  6398. ajax._responseType = s.TEXT;
  6399. oncomplete(JSON.parse(ajax.responseText));
  6400. } else if (ajax.responseType == s.ARRAY_BUFFER || ajax.responseType == s.BLOB || ajax.responseType == s.JSON) {
  6401. oncomplete(ajax.response);
  6402. } else if (ajax.responseText.length > 0) {
  6403. oncomplete(ajax.responseText);
  6404. } else {
  6405. oncomplete(null);
  6406. }
  6407. }
  6408. } else {
  6409. if (err) {
  6410. err(ajax);
  6411. }
  6412. }
  6413. }
  6414. };
  6415. ajax.send(data);
  6416. },
  6417. getHttp: function() {
  6418. if (typeof XMLHttpRequest != UNDEFINED) {
  6419. return new XMLHttpRequest();
  6420. }
  6421. try {
  6422. return new ActiveXObject("Msxml2.XMLHTTP");
  6423. } catch (e) {
  6424. try {
  6425. return new ActiveXObject("Microsoft.XMLHTTP");
  6426. } catch (e) {
  6427. if (!this.err) {
  6428. this.err(e);
  6429. }
  6430. }
  6431. }
  6432. return false;
  6433. }
  6434. };
  6435. return new LAjax();
  6436. })();
  6437. var LStageWebView = (function() {
  6438. function LStageWebView() {
  6439. var s = this;
  6440. LExtends(s, LEventDispatcher, []);
  6441. s.display = document.createElement("div");
  6442. s.iframe = document.createElement("iframe");
  6443. s.display.style.position = "absolute";
  6444. s.display.style.marginTop = "0px";
  6445. s.display.style.marginLeft = "0px";
  6446. s.display.style.zIndex = 11;
  6447. if (LGlobal.ios) {
  6448. s.display.style.overflow = "auto";
  6449. s.display.style.webkitOverflowScrolling = "touch";
  6450. }
  6451. s.display.appendChild(s.iframe);
  6452. s.idAdded = false;
  6453. }
  6454. var p = {
  6455. loadURL: function(u) {
  6456. var s = this;
  6457. s.iframe.src = u;
  6458. s.iframe.onload = function() {
  6459. s.dispatchEvent(LEvent.COMPLETE);
  6460. };
  6461. },
  6462. show: function() {
  6463. var s = this;
  6464. if (!s.idAdded) {
  6465. LGlobal.object.appendChild(s.display);
  6466. s.idAdded = true;
  6467. }
  6468. if (s.display.style.display == "none") {
  6469. s.display.style.display = "";
  6470. }
  6471. },
  6472. die: function() {
  6473. LGlobal.object.removeChild(this.display);
  6474. this.idAdded = false;
  6475. },
  6476. hide: function() {
  6477. this.display.style.display = "none";
  6478. },
  6479. setViewPort: function(r) {
  6480. var s = this, sx = parseInt(LGlobal.canvasObj.style.width) / LGlobal.canvasObj.width, sy = parseInt(LGlobal.canvasObj.style.height) / LGlobal.canvasObj.height;
  6481. s.display.style.marginTop = (parseInt(LGlobal.canvasObj.style.marginTop) + ((r.y * sy)>>>0)) + "px";
  6482. s.display.style.marginLeft = (parseInt(LGlobal.canvasObj.style.marginLeft) + ((r.x * sx)>>>0)) + "px";
  6483. s.iframe.style.width = s.display.style.width = (r.width * sx>>>0) + "px";
  6484. s.iframe.style.height = s.display.style.height = (r.height * sy>>>0) + "px";
  6485. }
  6486. };
  6487. for (var k in p) {
  6488. LStageWebView.prototype[k] = p[k];
  6489. }
  6490. return LStageWebView;
  6491. })();
  6492. var FPS = (function() {
  6493. function FPS() {
  6494. var s = this;
  6495. LExtends(s, LSprite, []);
  6496. if (!LGlobal.fpsStatus) {
  6497. LGlobal.fpsStatus = {
  6498. a: 0,
  6499. b: 0,
  6500. c: 0,
  6501. d: 0,
  6502. e: 0,
  6503. bitmapData: 0,
  6504. display: 0,
  6505. transform: 0,
  6506. graphics: 0,
  6507. text: 0,
  6508. reset: function() {
  6509. this.a = this.bitmapData;
  6510. this.b = this.display - 1;
  6511. this.c = this.transform - 1;
  6512. this.d = this.graphics - 1;
  6513. this.e = this.text - 5;
  6514. this.bitmapData = 0;
  6515. this.display = 0;
  6516. this.transform = 0;
  6517. this.graphics = 0;
  6518. this.text = 0;
  6519. }
  6520. };
  6521. }
  6522. s.fps = [];
  6523. for (var i = 0; i < 5; i++) {
  6524. var f = new LTextField();
  6525. f.color = "#ffffff";
  6526. f.y = i * 20;
  6527. s.addChild(f);
  6528. s.fps.push(f);
  6529. }
  6530. s.fpsCount = 0;
  6531. s.fpsTime = (new Date()).getTime();
  6532. s.addEventListener(LEvent.ENTER_FRAME, s.showFPS);
  6533. }
  6534. FPS.prototype.showFPS = function(e) {
  6535. var s = e.currentTarget, t, f;
  6536. s.fpsCount++;
  6537. t = (new Date()).getTime();
  6538. if (t - s.fpsTime < 1000)
  6539. return;
  6540. s.fps[0].text = "FPS:" + Math.round(s.fpsCount * 10000 / (t - s.fpsTime)) / 10;
  6541. f = LGlobal.fpsStatus;
  6542. s.fps[1].text = "DisplayObject:" + f.c + "/" + f.b;
  6543. s.fps[2].text = "Draw image:" + f.a;
  6544. s.fps[3].text = "Drwa graphics:" + f.d;
  6545. s.fps[4].text = "Draw text:" + f.e;
  6546. s.fpsTime = t;
  6547. s.fpsCount = 0;
  6548. s.graphics.clear();
  6549. s.graphics.drawRect(0, "#000000", [0, 0, s.fps[1].getWidth(), 100], true, "#000000");
  6550. };
  6551. FPS.prototype.die = function() {
  6552. var s = this;
  6553. LGlobal.fpsStatus = null;
  6554. s.callParent("die", arguments);
  6555. };
  6556. return FPS;
  6557. })();
  6558. var LQuadTree = (function() {
  6559. function LQuadTree(rect) {
  6560. var s = this;
  6561. LExtends(s, LObject, []);
  6562. s.q1 = null;
  6563. s.q2 = null;
  6564. s.q3 = null;
  6565. s.q4 = null;
  6566. s.parent = null;
  6567. s.data = [];
  6568. s.rect = rect;
  6569. s.root = s;
  6570. }
  6571. var p = {
  6572. createChildren: function(deep) {
  6573. if (deep == 0) {
  6574. return;
  6575. }
  6576. var s = this;
  6577. var hw = s.rect.width / 2, hh = s.rect.height / 2;
  6578. s.q1 = new LQuadTree(new LRectangle(s.rect.x + hw, s.rect.y, hw, hh));
  6579. s.q2 = new LQuadTree(new LRectangle(s.rect.x + hw, s.rect.y + hh, hw, hh));
  6580. s.q3 = new LQuadTree(new LRectangle(s.rect.x, s.rect.y + hh, hw, hh));
  6581. s.q4 = new LQuadTree(new LRectangle(s.rect.x, s.rect.y, hw, hh));
  6582. s.q1.parent = s.q2.parent = s.q3.parent = s.q4.parent = s;
  6583. s.q1.root = s.q2.root = s.q3.root = s.q4.root = s.root;
  6584. s.q1.createChildren(deep - 1);
  6585. s.q2.createChildren(deep - 1);
  6586. s.q3.createChildren(deep - 1);
  6587. s.q4.createChildren(deep - 1);
  6588. },
  6589. hasChildren: function() {
  6590. var s = this;
  6591. return s.q1 && s.q2 && s.q3 && s.q4;
  6592. },
  6593. clear: function() {
  6594. var s = this;
  6595. if (s.hasChildren()) {
  6596. return s.q1.clear() || s.q2.clear() || s.q3.clear() || s.q4.clear();
  6597. } else {
  6598. s.q1 = null;
  6599. s.q2 = null;
  6600. s.q3 = null;
  6601. s.q4 = null;
  6602. s.parent = null;
  6603. s.data = [];
  6604. return s;
  6605. }
  6606. },
  6607. add: function(v, x, y) {
  6608. var s = this;
  6609. if (!s.isIn(x, y)) {
  6610. return null;
  6611. }
  6612. if (s.hasChildren()) {
  6613. return s.q1.add(v, x, y) || s.q2.add(v, x, y) || s.q3.add(v, x, y) || s.q4.add(v, x, y);
  6614. } else {
  6615. s.data.push(v);
  6616. return s;
  6617. }
  6618. },
  6619. remove: function(v, x, y) {
  6620. var s = this;
  6621. if (!s.isIn(x, y)) {
  6622. return null;
  6623. }
  6624. if (s.hasChildren()) {
  6625. return s.q1.remove(v, x, y) || s.q2.remove(v, x, y) || s.q3.remove(v, x, y) || s.q4.remove(v, x, y);
  6626. } else {
  6627. var index = s.data.indexOf(v);
  6628. if (index!=-1) {
  6629. s.data.splice(index, 1);
  6630. return s;
  6631. } else {
  6632. return null;
  6633. }
  6634. }
  6635. },
  6636. isIn: function(x, y) {
  6637. var s = this;
  6638. return (typeof x == UNDEFINED || (x >= s.rect.x && x < s.rect.right)) && (typeof y == UNDEFINED || (y >= s.rect.y && y < s.rect.bottom));
  6639. },
  6640. getDataInRect: function(rect) {
  6641. var s = this;
  6642. if (!s.rect.intersects(rect)) {
  6643. return [];
  6644. }
  6645. var r = s.data.concat();
  6646. if (s.hasChildren()) {
  6647. r.push.apply(r, s.q1.getDataInRect(rect));
  6648. r.push.apply(r, s.q2.getDataInRect(rect));
  6649. r.push.apply(r, s.q3.getDataInRect(rect));
  6650. r.push.apply(r, s.q4.getDataInRect(rect));
  6651. }
  6652. return r;
  6653. }
  6654. };
  6655. for (var k in p) {
  6656. LQuadTree.prototype[k] = p[k];
  6657. }
  6658. return LQuadTree;
  6659. })();
  6660. var LoadingSample1 = (function() {
  6661. function LoadingSample1(step, b, c) {
  6662. base(this, LSprite, []);
  6663. var s = this;
  6664. s.numberList = new Array([1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1], [0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0], [1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1], [1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1], [1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1], [1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1], [1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1], [1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1], [1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1], [1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1]);
  6665. s.backgroundColor = b == null ? "#000000" : b;
  6666. s.color = c == null ? "#ffffff" : c;
  6667. s.progress = 0;
  6668. s.step = step == null ? LGlobal.width * 0.5 / 15 : step;
  6669. s.back = new LSprite();
  6670. s.addChild(s.back);
  6671. s.num = new LSprite();
  6672. s.addChild(s.num);
  6673. s.num.mask = new LSprite();
  6674. s.screenX = (LGlobal.width - s.step * 15) / 2;
  6675. s.screenY = (LGlobal.height - s.step * 5) / 2;
  6676. s.num.x = s.screenX;
  6677. s.num.y = s.screenY;
  6678. s.setProgress(s.progress);
  6679. }
  6680. LoadingSample1.prototype.setProgress = function(value) {
  6681. var s = this, c = LGlobal.canvas;
  6682. var num_0 = "", num_1, num_2, i;
  6683. var s_x = s.step;
  6684. if (value >= 100) {
  6685. num_0 = s.getNumber(1);
  6686. num_1 = s.getNumber(0);
  6687. num_2 = s.getNumber(0);
  6688. s_x = s.step * 3;
  6689. } else if (value >= 10) {
  6690. num_1 = s.getNumber(Math.floor(value / 10));
  6691. num_2 = s.getNumber(value % 10);
  6692. } else {
  6693. num_1 = s.getNumber(0);
  6694. num_2 = s.getNumber(value);
  6695. }
  6696. s.back.graphics.clear();
  6697. s.back.graphics.add(function() {
  6698. c.beginPath();
  6699. c.fillStyle = s.backgroundColor;
  6700. c.fillRect(0, 0, LGlobal.width, LGlobal.height);
  6701. c.closePath();
  6702. c.fillStyle = s.color;
  6703. if (value >= 100) {
  6704. for (i = 0; i < num_0.length; i++) {
  6705. if (num_0[i] == 0) {
  6706. continue;
  6707. }
  6708. c.fillRect(s.screenX + Math.floor(i % 3) * s.step, s.screenY + Math.floor(i / 3) * s.step, s.step, s.step);
  6709. }
  6710. }
  6711. for (i = 0; i < num_1.length; i++) {
  6712. if (num_1[i] == 0) {
  6713. continue;
  6714. }
  6715. c.fillRect(s.screenX + s_x + Math.floor(i % 3) * s.step, s.screenY + Math.floor(i / 3) * s.step, s.step, s.step);
  6716. }
  6717. for (i = 0; i < num_2.length; i++) {
  6718. if (num_2[i] == 0) {
  6719. continue;
  6720. }
  6721. c.fillRect(s.screenX + s_x + Math.floor(i % 3) * s.step + s.step * 4, s.screenY + Math.floor(i / 3) * s.step, s.step, s.step);
  6722. }
  6723. c.moveTo(s.screenX + s_x + s.step * 9.7, s.screenY);
  6724. c.lineTo(s.screenX + s_x + s.step * 10.5, s.screenY);
  6725. c.lineTo(s.screenX + s_x + s.step * 9.3, s.screenY + s.step * 5);
  6726. c.lineTo(s.screenX + s_x + s.step * 8.5, s.screenY + s.step * 5);
  6727. c.lineTo(s.screenX + s_x + s.step * 9.7, s.screenY);
  6728. c.fill();
  6729. c.moveTo(s.screenX + s_x + s.step * 8.5, s.screenY + s.step);
  6730. c.arc(s.screenX + s_x + s.step * 8.5, s.screenY + s.step, s.step * 0.6, 0, 360 + Math.PI / 180);
  6731. c.moveTo(s.screenX + s_x + s.step * 10.5, s.screenY + s.step * 4);
  6732. c.arc(s.screenX + s_x + s.step * 10.5, s.screenY + s.step * 4, s.step * 0.6, 0, 360 + Math.PI / 180);
  6733. c.fill();
  6734. });
  6735. s.num.mask.graphics.clear();
  6736. s.num.mask.graphics.add(function() {
  6737. if (value >= 100) {
  6738. for (i = 0; i < num_0.length; i++) {
  6739. if (num_0[i] == 0) {
  6740. continue;
  6741. }
  6742. c.rect(s.screenX + Math.floor(i % 3) * s.step, s.screenY + Math.floor(i / 3) * s.step, s.step, s.step);
  6743. }
  6744. }
  6745. for (var i = 0; i < num_1.length; i++) {
  6746. if (num_1[i] == 0) {
  6747. continue;
  6748. }
  6749. c.rect(s.screenX + s_x + Math.floor(i % 3) * s.step, s.screenY + Math.floor(i / 3) * s.step, s.step, s.step);
  6750. }
  6751. for (var i = 0; i < num_2.length; i++) {
  6752. if (num_2[i] == 0) {
  6753. continue;
  6754. }
  6755. c.rect(s.screenX + s_x + Math.floor(i % 3) * s.step + s.step * 4, s.screenY + Math.floor(i / 3) * s.step, s.step, s.step);
  6756. }
  6757. });
  6758. c.fillStyle = LGlobal._create_loading_color();
  6759. s.num.graphics.clear();
  6760. s.num.graphics.drawRect(1, c.fillStyle, [0, s.step * 5 * (100 - value) * 0.01, LGlobal.width, LGlobal.height], true, c.fillStyle);
  6761. };
  6762. LoadingSample1.prototype.getNumber = function(value) {
  6763. return this.numberList[value];
  6764. };
  6765. return LoadingSample1;
  6766. })();
  6767. function LoadingSample2(size, background, color) {
  6768. base(this, LSprite, []);
  6769. var s = this, c = LGlobal.canvas, t = "Loading...", l;
  6770. s.backgroundColor = background == null ? "#000000" : background;
  6771. s.graphics.drawRect(1, s.backgroundColor, [0, 0, LGlobal.width, LGlobal.height], true, s.backgroundColor);
  6772. if (color == null)
  6773. color = LGlobal._create_loading_color();
  6774. s.color = color;
  6775. s.progress = 0;
  6776. s.size = size == null ? LGlobal.height * 0.2 : size;
  6777. l = new LTextField();
  6778. l.text = t;
  6779. l.size = s.size;
  6780. l.color = "#ffffff";
  6781. l.x = (LGlobal.width - l.getWidth()) / 2;
  6782. l.y = (LGlobal.height - s.size) / 2;
  6783. s.addChild(l);
  6784. s.backLabel = l;
  6785. l = new LTextField();
  6786. l.text = "***%";
  6787. l.size = s.size * 0.3;
  6788. l.color = color;
  6789. l.x = (LGlobal.width - l.getWidth()) / 2;
  6790. l.y = (LGlobal.height - s.size) / 2 - s.size * 0.4;
  6791. s.addChild(l);
  6792. s.progressLabel = l;
  6793. l = new LTextField();
  6794. l.text = t;
  6795. l.size = s.size;
  6796. l.color = s.color;
  6797. l.x = (LGlobal.width - l.getWidth()) / 2;
  6798. l.y = (LGlobal.height - s.size) / 2;
  6799. l.mask = new LGraphics();
  6800. s.screenX = l.x;
  6801. s.screenY = l.y;
  6802. s.screenWidth = l.getWidth();
  6803. s.addChild(l);
  6804. s.showLabel = l;
  6805. c.shadowOffsetX = 2;
  6806. c.shadowOffsetY = 2;
  6807. c.shadowColor = "blue";
  6808. s.setProgress(s.progress);
  6809. }
  6810. LoadingSample2.prototype.setProgress = function(value) {
  6811. var s = this, c = LGlobal.canvas;
  6812. s.progressLabel.text = value + "%";
  6813. s.showLabel.mask.clear();
  6814. s.showLabel.mask.drawRect(0, "#000000", [s.screenX, 0, s.screenWidth * value * 0.01, LGlobal.height]);
  6815. if (value >= 100) {
  6816. c.shadowOffsetX = 0;
  6817. c.shadowOffsetY = 0;
  6818. }
  6819. };
  6820. function LoadingSample3(height, background, color) {
  6821. base(this, LSprite, []);
  6822. var s = this, c = LGlobal.canvas;
  6823. s.backgroundColor = background == null ? "#000000" : background;
  6824. s.graphics.drawRect(1, s.backgroundColor, [0, 0, LGlobal.width, LGlobal.height], true, s.backgroundColor);
  6825. if (color == null)
  6826. color = LGlobal._create_loading_color();
  6827. s.color = color;
  6828. s.progress = 0;
  6829. s.screenWidth = LGlobal.width * 0.75;
  6830. s.screenHeight = height == null ? LGlobal.height * 0.1 : height;
  6831. if (s.screenHeight > 5)
  6832. s.screenHeight = 5;
  6833. s.screenX = (LGlobal.width - s.screenWidth) / 2;
  6834. s.screenY = (LGlobal.height - s.screenHeight) / 2;
  6835. s.back = new LSprite();
  6836. s.addChild(s.back);
  6837. s.label = new LTextField();
  6838. s.label.color = "#ffffff";
  6839. s.label.weight = "bolder";
  6840. s.label.size = s.screenHeight * 2;
  6841. s.label.x = s.screenX + (s.screenWidth - s.label.getWidth()) * 0.5;
  6842. s.label.y = s.screenY - s.screenHeight * 4;
  6843. s.addChild(s.label);
  6844. s.star = new Array();
  6845. s.addEventListener(LEvent.ENTER_FRAME, s.onframe);
  6846. s.setProgress(s.progress);
  6847. }
  6848. LoadingSample3.prototype.onframe = function(s) {
  6849. var i, star, l;
  6850. if (s.progress >= 100) {
  6851. if (s.star.length > 0) {
  6852. for (i = 0, l = s.star.length; i < l; i++) {
  6853. s.removeChild(s.star[i]);
  6854. }
  6855. s.star.length = 0;
  6856. }
  6857. return;
  6858. }
  6859. for (i = 0, l = s.star.length; i < l; i++) {
  6860. star = s.star[i];
  6861. star.alpha -= 0.1;
  6862. star.x += star.speedx;
  6863. star.y += star.speedy;
  6864. if (star.alpha <= 0) {
  6865. s.star.splice(i, 1);
  6866. s.removeChild(star);
  6867. i--, l--;
  6868. }
  6869. }
  6870. if (s.star.length < 10)
  6871. s.addStar();
  6872. };
  6873. LoadingSample3.prototype.addStar = function() {
  6874. var s = this, c = LGlobal.canvas;
  6875. var star = new LSprite();
  6876. var step = 1 + Math.floor(Math.random() * 4);
  6877. star.graphics.add(function() {
  6878. c.beginPath();
  6879. c.fillStyle = "#ffffff";
  6880. c.lineTo(step * 2, step);
  6881. c.lineTo(step * 4, 0);
  6882. c.lineTo(step * 3, step * 2);
  6883. c.lineTo(step * 4, step * 4);
  6884. c.lineTo(step * 2, step * 3);
  6885. c.lineTo(0, step * 4);
  6886. c.lineTo(step, step * 2);
  6887. c.lineTo(0, 0);
  6888. c.fill();
  6889. });
  6890. star.x = s.screenX + s.screenWidth * s.progress * 0.01;
  6891. star.y = s.screenY;
  6892. star.speedx = 4 - 8 * Math.random();
  6893. star.speedy = 4 - 8 * Math.random();
  6894. s.star.push(star);
  6895. s.addChild(star);
  6896. };
  6897. LoadingSample3.prototype.setProgress = function(value) {
  6898. var s = this, c = LGlobal.canvas;
  6899. if (value > 100)
  6900. value = 100;
  6901. s.progress = value;
  6902. s.back.graphics.clear();
  6903. s.back.graphics.add(function() {
  6904. c.beginPath();
  6905. c.fillStyle = "#00FFFF";
  6906. c.rect(s.screenX - 3, s.screenY - 3, s.screenWidth + 6, s.screenHeight + 6);
  6907. c.fill();
  6908. c.beginPath();
  6909. c.fillStyle = "#990033";
  6910. c.rect(s.screenX, s.screenY, s.screenWidth, s.screenHeight);
  6911. c.fill();
  6912. c.beginPath();
  6913. c.fillStyle = s.color;
  6914. c.rect(s.screenX, s.screenY, s.screenWidth * value * 0.01, s.screenHeight);
  6915. c.fill();
  6916. });
  6917. s.label.text = value + "%";
  6918. };
  6919. function LoadingSample4(height, background, color) {
  6920. base(this, LSprite, []);
  6921. var s = this, c = LGlobal.canvas;
  6922. s.backgroundColor = background == null ? "#000000" : background;
  6923. s.graphics.drawRect(1, s.backgroundColor, [0, 0, LGlobal.width, LGlobal.height], true, s.backgroundColor);
  6924. if (color == null)
  6925. color = "#FFFFFF";
  6926. s.arc = new LSprite();
  6927. s.arc.x = LGlobal.width * 0.5;
  6928. s.arc.y = LGlobal.height * 0.5;
  6929. s.addChild(s.arc);
  6930. for (var i = 0; i < 360; i++) {
  6931. s.arc.graphics.drawArc(1 + i / 36, color, [0, 0, 50, (2 * Math.PI / 360) * i, (2 * Math.PI / 360) * (i + 2)]);
  6932. }
  6933. s.progress = 0;
  6934. s.label = new LTextField();
  6935. s.label.color = color;
  6936. s.label.weight = "bolder";
  6937. s.label.size = 18;
  6938. s.label.x = LGlobal.width * 0.5;
  6939. s.label.y = LGlobal.height * 0.5 - s.label.getHeight() * 0.5;
  6940. s.addChild(s.label);
  6941. var shadow = new LDropShadowFilter(0, 0, "#FFFFFF", 30);
  6942. s.arc.filters = [shadow];
  6943. s.addEventListener(LEvent.ENTER_FRAME, s.onframe);
  6944. s.setProgress(s.progress);
  6945. }
  6946. LoadingSample4.prototype.onframe = function(event) {
  6947. event.target.arc.rotate += 20;
  6948. };
  6949. LoadingSample4.prototype.setProgress = function(value) {
  6950. var s = this;
  6951. if (value > 100)
  6952. value = 100;
  6953. s.progress = value;
  6954. s.label.text = value + "%";
  6955. s.label.x = LGlobal.width * 0.5 - s.label.getWidth() * 0.5;
  6956. };
  6957. function LoadingSample5(height, background, color) {
  6958. base(this, LSprite, []);
  6959. var s = this, c = LGlobal.canvas;
  6960. s.backgroundColor = background == null ? "#000000" : background;
  6961. s.graphics.drawRect(1, s.backgroundColor, [0, 0, LGlobal.width, LGlobal.height], true, s.backgroundColor);
  6962. if (color == null)
  6963. color = "#FFFFFF";
  6964. s.arc = new LSprite();
  6965. s.arc.x = LGlobal.width * 0.5;
  6966. s.arc.y = LGlobal.height * 0.5;
  6967. s.addChild(s.arc);
  6968. var r = 50;
  6969. for (var i = 0; i < 360; i += 30) {
  6970. var child = new LSprite();
  6971. child.graphics.drawArc(0, color, [r, 0, 7, 0, 2 * Math.PI], true, color);
  6972. child.rotate = i;
  6973. child.alpha = 0.1 + i / 360;
  6974. s.arc.addChild(child);
  6975. }
  6976. s.index = 0;
  6977. s.max = 3;
  6978. s.progress = 0;
  6979. s.label = new LTextField();
  6980. s.label.color = "#FFFFFF";
  6981. s.label.weight = "bolder";
  6982. s.label.size = 18;
  6983. s.label.x = LGlobal.width * 0.5;
  6984. s.label.y = LGlobal.height * 0.5 - s.label.getHeight() * 0.5;
  6985. s.addChild(s.label);
  6986. var shadow = new LDropShadowFilter(0, 0, "#FFFFFF", 30);
  6987. s.arc.filters = [shadow];
  6988. s.addEventListener(LEvent.ENTER_FRAME, s.onframe);
  6989. s.setProgress(s.progress);
  6990. }
  6991. LoadingSample5.prototype.onframe = function(event) {
  6992. var s = event.target;
  6993. if (s.index++<s.max)
  6994. return;
  6995. s.index = 0;
  6996. s.arc.rotate += 30;
  6997. };
  6998. LoadingSample5.prototype.setProgress = function(value) {
  6999. var s = this;
  7000. if (value > 100)
  7001. value = 100;
  7002. s.progress = value;
  7003. s.label.text = value + "%";
  7004. s.label.x = LGlobal.width * 0.5 - s.label.getWidth() * 0.5;
  7005. };
  7006. function LoadingSample6(r, color, filterColor) {
  7007. var self = this;
  7008. base(self, LSprite, []);
  7009. self.progress = 0;
  7010. self.step = 0;
  7011. self.holeR = r || 10;
  7012. self.holeAmount = 5;
  7013. self.holesx = 20;
  7014. self.loadingBarWidth = self.holeR * 2 * self.holeAmount + self.holesx * (self.holeAmount - 1);
  7015. self.loadingBarHeight = self.holeR * 2;
  7016. self.progressColor = color || "#2187e7";
  7017. self.filterColor = filterColor || "#00c6ff";
  7018. self.backLayer = new LSprite();
  7019. self.backLayer.graphics.drawRect(0, "", [0, 0, LGlobal.width, LGlobal.height], true, "#161616");
  7020. self.addChild(self.backLayer);
  7021. self.holeLayer = new LSprite();
  7022. self.holeLayer.x = (LGlobal.width - self.loadingBarWidth) * 0.5;
  7023. self.holeLayer.y = (LGlobal.height - self.loadingBarHeight) * 0.5;
  7024. self.addChild(self.holeLayer);
  7025. self.progressLayer = new LSprite();
  7026. self.progressLayer.x = (LGlobal.width - self.loadingBarWidth) * 0.5;
  7027. self.progressLayer.y = (LGlobal.height - self.loadingBarHeight) * 0.5;
  7028. self.addChild(self.progressLayer);
  7029. self._addHole();
  7030. }
  7031. LoadingSample6.prototype._addHole = function() {
  7032. var self = this;
  7033. var amount = self.holeAmount, sx = self.holeR * 2 + self.holesx, r = self.holeR;
  7034. for (var i = 0; i < amount; i++) {
  7035. var holeObj = new LSprite();
  7036. holeObj.x = i * sx;
  7037. holeObj.graphics.drawArc(1, "#111", [0, 0, r, 0, 2 * Math.PI], true, "#000");
  7038. holeObj.graphics.drawArc(1, "#333", [0, 0, r, 1.7 * Math.PI, 0.7 * Math.PI], false);
  7039. self.holeLayer.addChild(holeObj);
  7040. }
  7041. };
  7042. LoadingSample6.prototype.setProgress = function(value) {
  7043. var self = this;
  7044. var sx = self.holeR * 2 + self.holesx, r = self.holeR;
  7045. self.progress = value / 100;
  7046. var tweenList = new Array();
  7047. while (Math.floor(self.progress / 0.2) > self.step) {
  7048. var cw = r * 2;
  7049. var ch = cw;
  7050. var grd = LGlobal.canvas.createLinearGradient(0, - ch * 2, 0, ch);
  7051. grd.addColorStop(0, "white");
  7052. grd.addColorStop(1, self.progressColor);
  7053. var po = new LSprite();
  7054. po.x = self.step * sx;
  7055. po.scaleX = 0;
  7056. po.scaleY = 0;
  7057. po.graphics.drawArc(0, "", [0, 0, r, 0, 2 * Math.PI], true, grd);
  7058. self.progressLayer.addChild(po);
  7059. tweenList.push(po);
  7060. self.step++;
  7061. }
  7062. var completeFunc = function(o) {
  7063. var circleObj = new LSprite();
  7064. circleObj.alpha = 0.9;
  7065. circleObj.x = o.x;
  7066. circleObj.graphics.drawArc(1, self.filterColor, [0, 0, r, 0, 2 * Math.PI], false);
  7067. self.progressLayer.addChild(circleObj);
  7068. var shadow = new LDropShadowFilter(0, 5, self.filterColor, 10);
  7069. circleObj.filters = [shadow];
  7070. LTweenLite.to(circleObj, 0.5, {
  7071. scaleX: 1.7,
  7072. scaleY: 1.7,
  7073. alpha: 0,
  7074. onComplete: function(s) {
  7075. s.parent.removeChild(s);
  7076. }
  7077. });
  7078. };
  7079. for (var i = 0; i < tweenList.length; i++) {
  7080. var o = tweenList[i];
  7081. LTweenLite.to(o, 1, {
  7082. scaleX: 1,
  7083. scaleY: 1,
  7084. onComplete: completeFunc
  7085. });
  7086. }
  7087. };
  7088. function LoadingSample7(w, h, color) {
  7089. var self = this;
  7090. base(self, LSprite, []);
  7091. self.progress = 0;
  7092. self.step = 0;
  7093. self.holeW = w || 10;
  7094. self.holeH = h || 30;
  7095. self.holeAmount = 10;
  7096. self.holesx = 8;
  7097. self.loadingBarWidth = self.holeW * self.holeAmount + self.holesx * (self.holeAmount - 1);
  7098. self.loadingBarHeight = self.holeH;
  7099. self.progressColor = color || "#2187e7";
  7100. self.backLayer = new LSprite();
  7101. self.backLayer.graphics.drawRect(0, "", [0, 0, LGlobal.width, LGlobal.height], true, "#161616");
  7102. self.addChild(self.backLayer);
  7103. self.holeLayer = new LSprite();
  7104. self.holeLayer.x = (LGlobal.width - self.loadingBarWidth) * 0.5;
  7105. self.holeLayer.y = (LGlobal.height - self.loadingBarHeight) * 0.5;
  7106. self.addChild(self.holeLayer);
  7107. self.progressLayer = new LSprite();
  7108. self.progressLayer.x = (LGlobal.width - self.loadingBarWidth) * 0.5;
  7109. self.progressLayer.y = (LGlobal.height - self.loadingBarHeight) * 0.5;
  7110. self.addChild(self.progressLayer);
  7111. self._addHole();
  7112. }
  7113. LoadingSample7.prototype._addHole = function() {
  7114. var self = this;
  7115. var amount = self.holeAmount, sx = self.holeW + self.holesx, w = self.holeW, h = self.holeH;
  7116. for (var i = 0; i < amount; i++) {
  7117. var holeObj = new LSprite();
  7118. holeObj.x = i * sx;
  7119. holeObj.graphics.drawRect(1, "#333", [1, 1, self.holeW, self.holeH], false);
  7120. holeObj.graphics.drawRect(1, "#111", [0, 0, self.holeW, self.holeH], true, "#000");
  7121. self.holeLayer.addChild(holeObj);
  7122. var grd = LGlobal.canvas.createLinearGradient(0, - h, 0, h);
  7123. grd.addColorStop(0, "white");
  7124. grd.addColorStop(1, self.progressColor);
  7125. var progressObj = new LSprite();
  7126. progressObj.alpha = 0;
  7127. progressObj.x = i * sx;
  7128. progressObj.graphics.drawRect(0, "", [0, 0, self.holeW, self.holeH], true, grd);
  7129. self.progressLayer.addChild(progressObj);
  7130. }
  7131. };
  7132. LoadingSample7.prototype.setProgress = function(value) {
  7133. var self = this;
  7134. self.progress = value / 100;
  7135. if (Math.floor(self.progress / 0.1) > self.step) {
  7136. var n = Math.ceil(self.progress / 0.1);
  7137. if (n > 10)
  7138. n = 10;
  7139. for (var i = 0; i < n; i++) {
  7140. var sc = self.progressLayer.childList;
  7141. if (sc[i].alpha > 0)
  7142. continue;
  7143. var o = self.progressLayer.childList[i];
  7144. LTweenLite.to(o, 1, {
  7145. alpha: 1
  7146. });
  7147. }
  7148. self.step++;
  7149. }
  7150. };
  7151. var LBox2d = (function() {
  7152. function LBox2d(gravity, doSleep, drawScale) {
  7153. var s = this;
  7154. Box2D.Dynamics.b2World.prototype.LAddController = Box2D.Dynamics.b2World.prototype.AddController;
  7155. Box2D.Dynamics.b2World.prototype.AddController = function(c) {
  7156. var l = {}, k;
  7157. for (k in c) {
  7158. l[k] = c[k];
  7159. }
  7160. if (LBox2d) {
  7161. LBox2d.m_controllerList = l;
  7162. }
  7163. return this.LAddController(c);
  7164. };
  7165. var i, j, b = Box2D, d, a = [b.Collision, b.Common, b.Common.Math, b.Dynamics, b.Dynamics.Contacts, b.Dynamics.Controllers, b.Dynamics.Joints, b.Collision.Shapes];
  7166. for (i in a) {
  7167. for (j in a[i]) {
  7168. s[j] = a[i][j];
  7169. }
  7170. }
  7171. if (typeof drawScale == UNDEFINED) {
  7172. drawScale = 30;
  7173. }
  7174. s.stop = false;
  7175. s.drawScale = 30;
  7176. s.selectedBody = null;
  7177. s.mouseJoint = null;
  7178. s.mousePVec = null;
  7179. s.contactListener = null;
  7180. if (typeof gravity == UNDEFINED) {
  7181. gravity = new s.b2Vec2(0, 9.8);
  7182. } else {
  7183. gravity = new s.b2Vec2(gravity[0], gravity[1]);
  7184. }
  7185. if (typeof doSleep == UNDEFINED) {
  7186. doSleep = true;
  7187. }
  7188. s.world = new s.b2World(gravity, doSleep);
  7189. s.removeList = new Array();
  7190. if (LGlobal.traceDebug) {
  7191. d = new s.b2DebugDraw();
  7192. d.SetSprite(LGlobal.canvas);
  7193. d.SetLineThickness(1);
  7194. d.SetFillAlpha(0.5);
  7195. d.SetAlpha(1);
  7196. d.SetDrawScale(s.drawScale);
  7197. d.SetFlags(s.b2DebugDraw.e_shapeBit | s.b2DebugDraw.e_jointBit);
  7198. s.world.SetDebugDraw(d);
  7199. }
  7200. LGlobal.destroy = true;
  7201. }
  7202. LBox2d.prototype = {
  7203. setEvent: function(t_v, f_v) {
  7204. var s = this;
  7205. if (t_v == LEvent.ENTER_FRAME) {
  7206. s.ll_enterFrame = f_v;
  7207. return;
  7208. }
  7209. if (!s.contactListener) {
  7210. s.contactListener = new s.b2ContactListener();
  7211. s.world.SetContactListener(s.contactListener);
  7212. }
  7213. switch (t_v) {
  7214. case LEvent.END_CONTACT:
  7215. s.contactListener.EndContact = f_v;
  7216. break;
  7217. case LEvent.PRE_SOLVE:
  7218. s.contactListener.PreSolve = f_v;
  7219. break;
  7220. case LEvent.POST_SOLVE:
  7221. s.contactListener.PostSolve = f_v;
  7222. break;
  7223. case LEvent.BEGIN_CONTACT:
  7224. default:
  7225. s.contactListener.BeginContact = f_v;
  7226. }
  7227. },
  7228. setWeldJoint: function(A, B) {
  7229. var s = this;
  7230. var j = new s.b2WeldJointDef();
  7231. j.Initialize(B, A, B.GetWorldCenter());
  7232. return s.world.CreateJoint(j);
  7233. },
  7234. setLineJoint: function(A, B, vec, t, m) {
  7235. var s = this;
  7236. var wa = new s.b2Vec2(vec[0], vec[1]);
  7237. var j = new s.b2LineJointDef();
  7238. j.Initialize(A, B, B.GetWorldCenter(), wa);
  7239. if (t == null) {
  7240. j.enableLimit = false;
  7241. } else {
  7242. j.lowerTranslation = t[0];
  7243. j.upperTranslation = t[1];
  7244. j.enableLimit = true;
  7245. }
  7246. if (m == null) {
  7247. j.enableMotor = false;
  7248. } else {
  7249. j.maxMotorForce = m[0];
  7250. j.motorSpeed = m[1];
  7251. j.enableMotor = true;
  7252. }
  7253. return s.world.CreateJoint(j);
  7254. },
  7255. setGearJoint: function(A, B, ra, r, p) {
  7256. var s = this;
  7257. var j = new s.b2GearJointDef();
  7258. j.joint1 = r;
  7259. j.joint2 = p;
  7260. j.bodyA = A;
  7261. j.bodyB = B;
  7262. j.ratio = ra * s.b2Settings.b2_pi / (300 / s.drawScale);
  7263. return s.world.CreateJoint(j);
  7264. },
  7265. setPrismaticJoint: function(A, B, vec, t, m) {
  7266. var s = this;
  7267. var wa = new s.b2Vec2(vec[0], vec[1]);
  7268. var j = new s.b2PrismaticJointDef();
  7269. j.Initialize(B, A, B.GetWorldCenter(), wa);
  7270. if (t == null) {
  7271. j.enableLimit = false;
  7272. } else {
  7273. j.lowerTranslation = t[0];
  7274. j.upperTranslation = t[1];
  7275. j.enableLimit = true;
  7276. }
  7277. if (m == null) {
  7278. j.enableMotor = false;
  7279. } else {
  7280. j.maxMotorForce = m[0];
  7281. j.motorSpeed = m[1];
  7282. j.enableMotor = true;
  7283. }
  7284. return s.world.CreateJoint(j);
  7285. },
  7286. setRevoluteJoint: function(A, B, a, m) {
  7287. var s = this;
  7288. var j = new s.b2RevoluteJointDef();
  7289. j.Initialize(A, B, B.GetWorldCenter());
  7290. if (a == null) {
  7291. j.enableLimit = false;
  7292. } else {
  7293. j.lowerAngle = a[0] * s.b2Settings.b2_pi / 180;
  7294. j.upperAngle = a[1] * s.b2Settings.b2_pi / 180;
  7295. j.enableLimit = true;
  7296. }
  7297. if (m == null) {
  7298. j.enableMotor = false;
  7299. } else {
  7300. j.maxMotorTorque = m[0];
  7301. j.motorSpeed = m[1];
  7302. j.enableMotor = true;
  7303. }
  7304. return s.world.CreateJoint(j);
  7305. },
  7306. setDistanceJoint: function(A, B) {
  7307. var s = this;
  7308. var j = new s.b2DistanceJointDef();
  7309. j.Initialize(A, B, A.GetWorldCenter(), B.GetWorldCenter());
  7310. return s.world.CreateJoint(j);
  7311. },
  7312. setPulleyJoint: function(A, B, vA, vB, ratio) {
  7313. var s = this;
  7314. var a1 = A.GetWorldCenter();
  7315. var a2 = B.GetWorldCenter();
  7316. var g1 = new s.b2Vec2(a1.x + (vA[0] / s.drawScale), a1.y + (vA[1] / s.drawScale));
  7317. var g2 = new s.b2Vec2(a2.x + (vB[0] / s.drawScale), a2.y + (vB[1] / s.drawScale));
  7318. var j = new s.b2PulleyJointDef();
  7319. j.Initialize(A, B, g1, g2, a1, a2, ratio);
  7320. j.maxLengthA = vA[2] / s.drawScale;
  7321. j.maxLengthB = vB[2] / s.drawScale;
  7322. return s.world.CreateJoint(j);
  7323. },
  7324. addCircle: function(r, cx, cy, t, d, f, e) {
  7325. var s = this;
  7326. s.bodyDef = new s.b2BodyDef;
  7327. s.bodyDef.type = t;
  7328. s.fixDef = new s.b2FixtureDef;
  7329. s.fixDef.density = d;
  7330. s.fixDef.friction = f;
  7331. s.fixDef.restitution = e;
  7332. s.fixDef.shape = new s.b2CircleShape(r);
  7333. s.bodyDef.position.x = cx;
  7334. s.bodyDef.position.y = cy;
  7335. var shape = s.world.CreateBody(s.bodyDef);
  7336. shape.CreateFixture(s.fixDef);
  7337. return shape;
  7338. },
  7339. addPolygon: function(w, h, cx, cy, type, d, f, e) {
  7340. var s = this;
  7341. s.bodyDef = new s.b2BodyDef;
  7342. s.bodyDef.type = type;
  7343. s.fixDef = new s.b2FixtureDef;
  7344. s.fixDef.density = d;
  7345. s.fixDef.friction = f;
  7346. s.fixDef.restitution = e;
  7347. s.fixDef.shape = new s.b2PolygonShape;
  7348. s.fixDef.shape.SetAsBox(w, h);
  7349. s.bodyDef.position.x = cx;
  7350. s.bodyDef.position.y = cy;
  7351. var shape = s.world.CreateBody(s.bodyDef);
  7352. shape.CreateFixture(s.fixDef);
  7353. return shape;
  7354. },
  7355. addVertices: function(vertices, type, d, f, e) {
  7356. var s = this, i, l;
  7357. s.bodyDef = new s.b2BodyDef;
  7358. s.bodyDef.type = type;
  7359. var shape = s.world.CreateBody(s.bodyDef);
  7360. for (i = 0, l = vertices.length; i < l; i++) {
  7361. s.createShapeAsArray(shape, vertices[i], type, d, f, e);
  7362. }
  7363. return shape;
  7364. },
  7365. createShapeAsArray: function(c, vertices, type, d, f, e) {
  7366. var s = this;
  7367. var shape = new s.b2PolygonShape();
  7368. var sv = s.createVerticesArray(vertices);
  7369. shape.SetAsArray(sv, 0);
  7370. var def = new s.b2FixtureDef();
  7371. def.shape = shape;
  7372. def.density = d;
  7373. def.friction = f;
  7374. def.restitution = e;
  7375. c.CreateFixture(def);
  7376. },
  7377. createVerticesArray: function(a) {
  7378. var s = this, i, l;
  7379. var v = new Array();
  7380. if (a.length < 3) {
  7381. return v;
  7382. }
  7383. for (i = 0, l = a.length; i < l; i++) {
  7384. v.push(new s.b2Vec2(a[i][0] / s.drawScale, a[i][1] / s.drawScale));
  7385. }
  7386. return v;
  7387. },
  7388. getBodyAtMouse: function(mouseX, mouseY) {
  7389. var s = this;
  7390. s.mousePVec = new s.b2Vec2(mouseX, mouseY);
  7391. var aabb = new s.b2AABB();
  7392. aabb.lowerBound.Set(mouseX - 0.001, mouseY - 0.001);
  7393. aabb.upperBound.Set(mouseX + 0.001, mouseY + 0.001);
  7394. s.selectedBody = null;
  7395. s.world.QueryAABB(s.getBodyCallBack, aabb);
  7396. return s.selectedBody;
  7397. },
  7398. getBodyCallBack: function(fixture) {
  7399. var s = LGlobal.box2d;
  7400. if (fixture.GetBody().GetType() != s.b2Body.b2_staticBody) {
  7401. if (fixture.GetShape().TestPoint(fixture.GetBody().GetTransform(), s.mousePVec)) {
  7402. s.selectedBody = fixture.GetBody();
  7403. return false;
  7404. }
  7405. }
  7406. return true;
  7407. },
  7408. ll_show: function() {
  7409. var s = this, k = null;
  7410. for (k in s.removeList) {
  7411. s.world.DestroyBody(s.removeList[k]);
  7412. }
  7413. s.removeList.splice(0, s.removeList.length);
  7414. if (s.stop) {
  7415. return;
  7416. }
  7417. if (s.ll_enterFrame) {
  7418. s.ll_enterFrame({
  7419. target: s
  7420. });
  7421. }
  7422. s.world.Step(1 / 30, 10, 10);
  7423. s.world.ClearForces();
  7424. if (LGlobal.traceDebug) {
  7425. s.world.DrawDebugData();
  7426. }
  7427. },
  7428. synchronous: function() {
  7429. var s = this;
  7430. var parent = null, child, position = null, cx = 0, cy = 0, currentBody, joint;
  7431. for (currentBody = s.world.GetBodyList(); currentBody; currentBody = currentBody.GetNext()
  7432. ) {
  7433. child = currentBody.GetUserData();
  7434. if (child) {
  7435. if (position == null) {
  7436. parent = child.parent;
  7437. cx = currentBody.GetPosition().x;
  7438. cy = currentBody.GetPosition().y;
  7439. }
  7440. currentBody.SetPosition(new s.b2Vec2((child.x + child.rotatex + parent.x) / s.drawScale, (child.y + child.rotatey + parent.y) / s.drawScale));
  7441. if (position == null) {
  7442. position = {
  7443. x: (currentBody.GetPosition().x - cx),
  7444. y: (currentBody.GetPosition().y - cy)
  7445. };
  7446. }
  7447. }
  7448. }
  7449. for (joint = s.world.GetJointList(); joint; joint = joint.GetNext()
  7450. ) {
  7451. if (joint.m_groundAnchor1) {
  7452. joint.m_groundAnchor1.x += position.x;
  7453. joint.m_groundAnchor1.y += position.y;
  7454. }
  7455. if (joint.m_groundAnchor2) {
  7456. joint.m_groundAnchor2.x += position.x;
  7457. joint.m_groundAnchor2.y += position.y;
  7458. }
  7459. }
  7460. if (LBox2d.m_controllerList && s.world.m_controllerList && parent) {
  7461. LGlobal.box2d.world.m_controllerList.offset = LBox2d.m_controllerList.offset - parent.y / LGlobal.box2d.drawScale;
  7462. }
  7463. }
  7464. };
  7465. return LBox2d;
  7466. })();
  7467. LSprite.prototype.setBodyMouseJoint = function(value) {
  7468. var s = this;
  7469. if (!s.box2dBody) {
  7470. return;
  7471. }
  7472. s.box2dBody.mouseJoint = value;
  7473. };
  7474. LSprite.prototype.clearBody = function(value) {
  7475. var s = this;
  7476. if (!s.box2dBody) {
  7477. return;
  7478. }
  7479. LGlobal.box2d.removeList.push(s.box2dBody);
  7480. s.box2dBody = null;
  7481. };
  7482. LSprite.prototype.addBodyCircle = function(radius, cx, cy, type, density, friction, restitution) {
  7483. var s = this;
  7484. s.rotatex = radius;
  7485. s.rotatey = radius;
  7486. s.box2dBody = LGlobal.box2d.addCircle(radius / LGlobal.box2d.drawScale, (s.x + cx) / LGlobal.box2d.drawScale, (s.y + cy) / LGlobal.box2d.drawScale, (type == 1) ? LGlobal.box2d.b2Body.b2_dynamicBody : LGlobal.box2d.b2Body.b2_staticBody, density == null ? 0.5 : density, friction == null ? 0.4 : friction, restitution == null ? 0.8 : restitution);
  7487. s.box2dBody.SetUserData(s);
  7488. };
  7489. LSprite.prototype.addBodyPolygon = function(w, h, type, density, friction, restitution) {
  7490. var s = this;
  7491. s.rotatex = w / 2;
  7492. s.rotatey = h / 2;
  7493. s.box2dBody = LGlobal.box2d.addPolygon(w * 0.5 / LGlobal.box2d.drawScale, h * 0.5 / LGlobal.box2d.drawScale, s.x / LGlobal.box2d.drawScale, s.y / LGlobal.box2d.drawScale, (type == 1) ? LGlobal.box2d.b2Body.b2_dynamicBody : LGlobal.box2d.b2Body.b2_staticBody, density == null ? 0.5 : density, friction == null ? 0.4 : friction, restitution == null ? 0.8 : restitution);
  7494. s.box2dBody.SetUserData(s);
  7495. };
  7496. LSprite.prototype.addBodyVertices = function(vertices, cx, cy, type, density, friction, restitution) {
  7497. var s = this;
  7498. s.rotatex = 0;
  7499. s.rotatey = 0;
  7500. s.box2dBody = LGlobal.box2d.addVertices(vertices, (type == 1) ? LGlobal.box2d.b2Body.b2_dynamicBody : LGlobal.box2d.b2Body.b2_staticBody, density, friction, restitution);
  7501. s.box2dBody.SetUserData(s);
  7502. s.box2dBody.SetPosition(new LGlobal.box2d.b2Vec2((s.x + cx) / LGlobal.box2d.drawScale, (s.y + cy) / LGlobal.box2d.drawScale));
  7503. };
  7504. LGlobal.mouseJoint_start = function(eve) {
  7505. if (!LGlobal.IS_MOUSE_DOWN ||!LGlobal.box2d || LGlobal.box2d.mouseJoint || LGlobal.box2d.stop) {
  7506. return;
  7507. }
  7508. var mX = eve.offsetX / LGlobal.box2d.drawScale, mY = eve.offsetY / LGlobal.box2d.drawScale, b = LGlobal.box2d.getBodyAtMouse(mX, mY);
  7509. if (b && b.mouseJoint) {
  7510. var m = new LGlobal.box2d.b2MouseJointDef();
  7511. m.bodyA = LGlobal.box2d.world.GetGroundBody();
  7512. m.bodyB = b;
  7513. m.target.Set(mX, mY);
  7514. m.collideConnected = true;
  7515. m.maxForce = 300000.0 * b.GetMass();
  7516. LGlobal.box2d.mouseJoint = LGlobal.box2d.world.CreateJoint(m);
  7517. b.SetAwake(true);
  7518. };
  7519. };
  7520. LGlobal.mouseJoint_move = function(eve) {
  7521. if (!LGlobal.IS_MOUSE_DOWN ||!LGlobal.box2d ||!LGlobal.box2d.mouseJoint) {
  7522. return;
  7523. }
  7524. mX = eve.offsetX / LGlobal.box2d.drawScale, mY = eve.offsetY / LGlobal.box2d.drawScale;
  7525. LGlobal.box2d.mouseJoint.SetTarget(new LGlobal.box2d.b2Vec2(mX, mY));
  7526. };
  7527. LGlobal.mouseJoint_end = function() {
  7528. if (LGlobal.box2d != null && LGlobal.box2d.mouseJoint) {
  7529. LGlobal.box2d.world.DestroyJoint(LGlobal.box2d.mouseJoint);
  7530. LGlobal.box2d.mouseJoint = null;
  7531. }
  7532. };
  7533. var LTransition = (function() {
  7534. function LTransition(displayObject, transObj) {
  7535. this.child = displayObject;
  7536. this.trans = transObj;
  7537. }
  7538. LTransition.prototype = {
  7539. startTransition: function() {
  7540. var self = this;
  7541. switch (self.trans.type) {
  7542. case LTransition.Blinds:
  7543. self.blinds();
  7544. break;
  7545. case LTransition.Fade:
  7546. self.fade();
  7547. break;
  7548. case LTransition.Fly:
  7549. self.fly();
  7550. break;
  7551. case LTransition.Iris:
  7552. self.iris();
  7553. break;
  7554. case LTransition.Squeeze:
  7555. self.squeeze();
  7556. break;
  7557. case LTransition.Wipe:
  7558. self.wipe();
  7559. break;
  7560. case LTransition.Zoom:
  7561. self.zoom();
  7562. break;
  7563. case LTransition.PixelDissolve:
  7564. self.pixelDissolve();
  7565. break;
  7566. case LTransition.Curtain:
  7567. self.curtain();
  7568. break;
  7569. default:
  7570. throw ("the type is not exists.");
  7571. }
  7572. },
  7573. blindsComplete: function(self) {
  7574. if (self.trans.direction == LTransition.OUT) {
  7575. self.child.mask.clear();
  7576. } else {
  7577. self.blindsUpdateRun();
  7578. }
  7579. self.child.mask = null;
  7580. if (self.trans.onComplete) {
  7581. self.trans.onComplete(self.child);
  7582. }
  7583. },
  7584. blindsUpdateRun: function() {
  7585. var self = this, g = self.child.mask, c = LGlobal.canvas;
  7586. g.clear();
  7587. if (self.trans.dimension) {
  7588. g.add(function() {
  7589. c.save();
  7590. for (var i = 0; i < self.trans.numStrips; i++) {
  7591. c.rect(i * self.maxSize, 0, self.blindsSize, self.child.getHeight());
  7592. }
  7593. c.restore();
  7594. });
  7595. } else {
  7596. g.add(function() {
  7597. c.save();
  7598. for (var i = 0; i < self.trans.numStrips; i++) {
  7599. c.rect(0, 0 + i * self.maxSize, self.child.getWidth(), self.blindsSize);
  7600. }
  7601. c.restore();
  7602. });
  7603. }
  7604. },
  7605. blindsUpdate: function(self) {
  7606. self.blindsUpdateRun();
  7607. if (self.trans.onUpdate) {
  7608. self.trans.onUpdate(self.child);
  7609. }
  7610. },
  7611. blinds: function() {
  7612. var self = this;
  7613. if (!self.trans.numStrips)
  7614. self.trans.numStrips = 1;
  7615. self.blindsSize = 0;
  7616. if (self.trans.dimension) {
  7617. self.maxSize = self.child.getWidth() / self.trans.numStrips>>0;
  7618. } else {
  7619. self.maxSize = self.child.getHeight() / self.trans.numStrips>>0;
  7620. }
  7621. var g = new LGraphics();
  7622. self.child.mask = g;
  7623. var toSize = self.maxSize;
  7624. if (self.trans.direction == LTransition.OUT) {
  7625. self.blindsSize = self.maxSize;
  7626. toSize = 0;
  7627. }
  7628. LTweenLite.to(self, self.trans.duration, {
  7629. blindsSize: toSize,
  7630. onComplete: self.blindsComplete,
  7631. onUpdate: self.blindsUpdate,
  7632. ease: self.trans.easing
  7633. });
  7634. },
  7635. fadeComplete: function(self) {
  7636. self.child.alpha = self.alpha;
  7637. if (self.trans.onComplete) {
  7638. self.trans.onComplete(self.child);
  7639. }
  7640. },
  7641. fadeUpdate: function(self) {
  7642. self.child.alpha = self.alpha;
  7643. if (self.trans.onUpdate) {
  7644. self.trans.onUpdate(self.child);
  7645. }
  7646. },
  7647. fade: function() {
  7648. var self = this;
  7649. var toAlpha = 1;
  7650. self.alpha = 0;
  7651. if (self.trans.direction == LTransition.OUT) {
  7652. self.alpha = 1;
  7653. toAlpha = 0;
  7654. }
  7655. self.child.alpha = self.alpha;
  7656. LTweenLite.to(self, self.trans.duration, {
  7657. alpha: toAlpha,
  7658. onComplete: self.fadeComplete,
  7659. onUpdate: self.fadeUpdate,
  7660. ease: self.trans.easing
  7661. });
  7662. },
  7663. flyComplete: function(self) {
  7664. self.child.x = self.x;
  7665. self.child.y = self.y;
  7666. if (self.trans.onComplete) {
  7667. self.trans.onComplete(self.child);
  7668. }
  7669. },
  7670. flyUpdate: function(self) {
  7671. self.child.x = self.x;
  7672. self.child.y = self.y;
  7673. if (self.trans.onUpdate) {
  7674. self.trans.onUpdate(self.child);
  7675. }
  7676. },
  7677. fly: function() {
  7678. var self = this;
  7679. var toX = self.child.x;
  7680. var toY = self.child.y;
  7681. switch (self.trans.startPoint) {
  7682. case 1:
  7683. self.x =- self.child.getWidth();
  7684. self.y =- self.child.getHeight();
  7685. break;
  7686. case 2:
  7687. self.x = (LGlobal.width - self.child.getWidth()) * 0.5;
  7688. self.y =- self.child.getHeight();
  7689. break;
  7690. case 3:
  7691. self.x = LGlobal.width;
  7692. self.y =- self.child.getHeight();
  7693. break;
  7694. case 4:
  7695. self.x =- self.child.getWidth();
  7696. self.y = (LGlobal.height - self.child.getHeight()) * 0.5;
  7697. break;
  7698. case 6:
  7699. self.x = LGlobal.width;
  7700. self.y = (LGlobal.height - self.child.getHeight()) * 0.5;
  7701. break;
  7702. case 7:
  7703. self.x =- self.child.getWidth();
  7704. self.y = LGlobal.height;
  7705. break;
  7706. case 8:
  7707. self.x = (LGlobal.width - self.child.getWidth()) * 0.5;
  7708. self.y = LGlobal.height;
  7709. break;
  7710. case 9:
  7711. self.x = LGlobal.width;
  7712. self.y = LGlobal.height;
  7713. break;
  7714. case 5:
  7715. default:
  7716. self.x = (LGlobal.width - self.child.getWidth()) * 0.5;
  7717. self.y = (LGlobal.height - self.child.getHeight()) * 0.5;
  7718. }
  7719. if (self.trans.direction == LTransition.OUT) {
  7720. var toX = self.x;
  7721. var toY = self.y;
  7722. self.x = self.child.x;
  7723. self.y = self.child.y;
  7724. } else {
  7725. self.child.x = self.x;
  7726. self.child.y = self.y;
  7727. }
  7728. LTweenLite.to(self, self.trans.duration, {
  7729. x: toX,
  7730. y: toY,
  7731. onComplete: self.flyComplete,
  7732. onUpdate: self.flyUpdate,
  7733. ease: self.trans.easing
  7734. });
  7735. },
  7736. irisComplete: function(self) {
  7737. if (self.trans.direction == LTransition.OUT) {
  7738. self.child.mask.clear();
  7739. } else {
  7740. self.irisUpdateRun();
  7741. }
  7742. self.child.mask = null;
  7743. if (self.trans.onComplete) {
  7744. self.trans.onComplete(self.child);
  7745. }
  7746. },
  7747. irisUpdateRun: function() {
  7748. var self = this, g = self.child.mask, c = LGlobal.canvas;
  7749. g.clear();
  7750. if (self.trans.shape == LIris.CIRCLE) {
  7751. g.drawArc(0, "#000000", [self.x, self.y, self.r, 0, Math.PI * 2]);
  7752. } else {
  7753. g.drawRect(0, "#000000", [self.x + self.sLeft, self.y + self.sTop, self.width, self.height]);
  7754. }
  7755. },
  7756. irisUpdate: function(self) {
  7757. self.irisUpdateRun();
  7758. if (self.trans.onUpdate) {
  7759. self.trans.onUpdate(self.child);
  7760. }
  7761. },
  7762. iris: function() {
  7763. var self = this;
  7764. self.sLeft = 0;
  7765. self.sTop = 0;
  7766. self.width = 0;
  7767. self.height = 0;
  7768. self.x = 0;
  7769. self.y = 0;
  7770. self.r = 0;
  7771. self.eWidth = self.child.getWidth();
  7772. self.eHeight = self.child.getHeight();
  7773. switch (self.trans.startPoint) {
  7774. case 1:
  7775. self.eR = Math.sqrt(self.eWidth * self.eWidth + self.eHeight * self.eHeight);
  7776. break;
  7777. case 2:
  7778. self.eR = Math.sqrt((self.eWidth * 0.5) * (self.eWidth * 0.5) + self.eHeight * self.eHeight);
  7779. self.x = self.child.getWidth() * 0.5;
  7780. break;
  7781. case 3:
  7782. self.eR = Math.sqrt(self.eWidth * self.eWidth + self.eHeight * self.eHeight);
  7783. self.x = self.child.getWidth();
  7784. break;
  7785. case 4:
  7786. self.eR = Math.sqrt(self.eWidth * self.eWidth + (self.eHeight * 0.5) * (self.eHeight * 0.5));
  7787. self.y = self.child.getHeight() * 0.5;
  7788. break;
  7789. case 6:
  7790. self.eR = Math.sqrt(self.eWidth * self.eWidth + (self.eHeight * 0.5) * (self.eHeight * 0.5));
  7791. self.x = self.child.getWidth();
  7792. self.y = self.child.getHeight() * 0.5;
  7793. break;
  7794. case 7:
  7795. self.eR = Math.sqrt(self.eWidth * self.eWidth + self.eHeight * self.eHeight);
  7796. self.y = self.child.getHeight();
  7797. break;
  7798. case 8:
  7799. self.eR = Math.sqrt((self.eWidth * 0.5) * (self.eWidth * 0.5) + self.eHeight * self.eHeight);
  7800. self.x = self.child.getWidth() * 0.5;
  7801. self.y = self.child.getHeight();
  7802. break;
  7803. case 9:
  7804. self.eR = Math.sqrt(self.eWidth * self.eWidth + self.eHeight * self.eHeight);
  7805. self.x = self.child.getWidth();
  7806. self.y = self.child.getHeight();
  7807. break;
  7808. case 5:
  7809. default:
  7810. self.eR = Math.sqrt((self.eWidth * 0.5) * (self.eWidth * 0.5) + (self.eHeight * 0.5) * (self.eHeight * 0.5));
  7811. self.x = self.child.getWidth() * 0.5;
  7812. self.y = self.child.getHeight() * 0.5;
  7813. }
  7814. self.eLeft =- self.x;
  7815. self.eTop =- self.y;
  7816. var g = new LGraphics();
  7817. self.child.mask = g;
  7818. var toSize = self.maxSize;
  7819. if (self.trans.direction == LTransition.OUT) {
  7820. self.sLeft = self.eLeft;
  7821. self.sTop = self.eTop;
  7822. self.eLeft = 0;
  7823. self.eTop = 0;
  7824. self.width = self.eWidth;
  7825. self.height = self.eHeight;
  7826. self.eWidth = 0;
  7827. self.eHeight = 0;
  7828. self.r = self.eR;
  7829. self.eR = 0;
  7830. }
  7831. LTweenLite.to(self, self.trans.duration, {
  7832. width: self.eWidth,
  7833. height: self.eHeight,
  7834. sLeft: self.eLeft,
  7835. sTop: self.eTop,
  7836. r: self.eR,
  7837. onComplete: self.irisComplete,
  7838. onUpdate: self.irisUpdate,
  7839. ease: self.trans.easing
  7840. });
  7841. },
  7842. curtainComplete: function(self) {
  7843. if (self.trans.direction == LTransition.OUT) {
  7844. self.child.mask.clear();
  7845. } else {
  7846. self.curtainUpdateRun();
  7847. }
  7848. self.child.mask = null;
  7849. if (self.trans.onComplete) {
  7850. self.trans.onComplete(self.child);
  7851. }
  7852. },
  7853. curtainUpdateRun: function() {
  7854. var self = this, g = self.child.mask, c = LGlobal.canvas;
  7855. g.clear();
  7856. if (self.trans.dimension) {
  7857. g.add(function() {
  7858. c.save();
  7859. c.rect(0, 0, self.width, self.child.getHeight());
  7860. c.rect(self.child.getWidth() - self.width, 0, self.width, self.child.getHeight());
  7861. c.restore();
  7862. });
  7863. } else {
  7864. g.add(function() {
  7865. c.save();
  7866. c.rect(0, 0, self.child.getWidth(), self.height);
  7867. c.rect(0, self.child.getHeight() - self.height, self.child.getWidth(), self.height);
  7868. c.restore();
  7869. });
  7870. }
  7871. },
  7872. curtainUpdate: function(self) {
  7873. self.curtainUpdateRun();
  7874. if (self.trans.onUpdate) {
  7875. self.trans.onUpdate(self.child);
  7876. }
  7877. },
  7878. curtain: function() {
  7879. var self = this;
  7880. var eW = self.child.getWidth() * 0.5;
  7881. var eH = self.child.getHeight() * 0.5;
  7882. if (self.trans.dimension) {
  7883. eH = 0;
  7884. } else {
  7885. eW = 0;
  7886. }
  7887. self.width = 0;
  7888. self.height = 0;
  7889. var g = new LGraphics();
  7890. self.child.mask = g;
  7891. var toSize = self.maxSize;
  7892. if (self.trans.direction == LTransition.OUT) {
  7893. self.width = eW;
  7894. self.height = eH;
  7895. eW = 0;
  7896. eH = 0;
  7897. }
  7898. LTweenLite.to(self, self.trans.duration, {
  7899. width: eW,
  7900. height: eH,
  7901. onComplete: self.curtainComplete,
  7902. onUpdate: self.curtainUpdate,
  7903. ease: self.trans.easing
  7904. });
  7905. },
  7906. squeezeComplete: function(self) {
  7907. self.child.scaleX = self.scaleX;
  7908. self.child.scaleY = self.scaleY;
  7909. if (self.trans.onComplete) {
  7910. self.trans.onComplete(self.child);
  7911. }
  7912. },
  7913. squeezeUpdate: function(self) {
  7914. self.child.scaleX = self.scaleX;
  7915. self.child.scaleY = self.scaleY;
  7916. if (self.trans.onUpdate) {
  7917. self.trans.onUpdate(self.child);
  7918. }
  7919. },
  7920. squeeze: function() {
  7921. var self = this;
  7922. var toScaleX = 1, toScaleY = 1;
  7923. self.scaleX = 0, self.scaleY = 0;
  7924. if (self.trans.dimension) {
  7925. self.scaleX = 1;
  7926. } else {
  7927. self.scaleY = 1;
  7928. }
  7929. if (self.trans.direction == LTransition.OUT) {
  7930. toScaleX = self.scaleX, toScaleY = self.scaleY;
  7931. self.scaleX = 1, self.scaleY = 1;
  7932. }
  7933. self.child.scaleX = self.scaleX;
  7934. self.child.scaleY = self.scaleY;
  7935. LTweenLite.to(self, self.trans.duration, {
  7936. scaleX: toScaleX,
  7937. scaleY: toScaleY,
  7938. onComplete: self.squeezeComplete,
  7939. onUpdate: self.squeezeUpdate,
  7940. ease: self.trans.easing
  7941. });
  7942. },
  7943. zoomComplete: function(self) {
  7944. self.child.scaleX = self.scaleX;
  7945. self.child.scaleY = self.scaleY;
  7946. if (self.trans.onComplete) {
  7947. self.trans.onComplete(self.child);
  7948. }
  7949. },
  7950. zoomUpdate: function(self) {
  7951. self.child.scaleX = self.scaleX;
  7952. self.child.scaleY = self.scaleY;
  7953. if (self.trans.onUpdate) {
  7954. self.trans.onUpdate(self.child);
  7955. }
  7956. },
  7957. zoom: function() {
  7958. var self = this;
  7959. var toScaleX = 1, toScaleY = 1;
  7960. self.scaleX = 0, self.scaleY = 0;
  7961. if (self.trans.direction == LTransition.OUT) {
  7962. toScaleX = 0, toScaleY = 0;
  7963. self.scaleX = 1, self.scaleY = 1;
  7964. }
  7965. self.child.scaleX = self.scaleX;
  7966. self.child.scaleY = self.scaleY;
  7967. LTweenLite.to(self, self.trans.duration, {
  7968. scaleX: toScaleX,
  7969. scaleY: toScaleY,
  7970. onComplete: self.zoomComplete,
  7971. onUpdate: self.zoomUpdate,
  7972. ease: self.trans.easing
  7973. });
  7974. },
  7975. wipeComplete: function(self) {
  7976. if (self.trans.direction == LTransition.OUT) {
  7977. self.child.mask.clear();
  7978. } else {
  7979. self.wipeUpdateRun();
  7980. }
  7981. self.child.mask = null;
  7982. if (self.trans.onComplete) {
  7983. self.trans.onComplete(self.child);
  7984. }
  7985. },
  7986. wipeUpdateRun: function() {
  7987. var self = this, g = self.child.mask, c = LGlobal.canvas;
  7988. g.clear();
  7989. g.drawVertices(0, "#000000", [[self.leftTopX, self.leftTopY], [self.leftBottomX, self.leftBottomY], [self.rightBottomX, self.rightBottomY], [self.rightTopX, self.rightTopY]]);
  7990. },
  7991. wipeUpdate: function(self) {
  7992. self.wipeUpdateRun();
  7993. if (self.trans.onUpdate) {
  7994. self.trans.onUpdate(self.child);
  7995. }
  7996. },
  7997. wipe: function() {
  7998. var self = this, w = self.child.getWidth(), h = self.child.getHeight(), ltX = self.leftTopX = 0, ltY = self.leftTopY = 0, lbX = self.leftBottomX = 0, lbY = self.leftBottomY = h, rtX = self.rightTopX = w, rtY = self.rightTopY = 0, rbX = self.rightBottomX = w, rbY = self.rightBottomY = h;
  7999. switch (self.trans.startPoint) {
  8000. case 1:
  8001. ltX = self.leftTopX =- w;
  8002. lbX = self.leftBottomX =- w * 2;
  8003. self.rightTopX = 0;
  8004. rtX = w * 2;
  8005. self.rightBottomX =- w;
  8006. rbX = w;
  8007. break;
  8008. case 2:
  8009. ltY = self.leftTopY =- h;
  8010. self.leftBottomY = 0;
  8011. lbY = h;
  8012. rtY = self.rightTopY =- h;
  8013. self.rightBottomY = 0;
  8014. rbY = h;
  8015. break;
  8016. case 3:
  8017. self.leftTopX = w;
  8018. ltX =- w;
  8019. self.leftBottomX = w * 2;
  8020. lbX = 0;
  8021. rtX = self.rightTopX = w * 2;
  8022. rbX = self.rightBottomX = w * 3;
  8023. break;
  8024. case 4:
  8025. self.rightTopX = 0;
  8026. rtX = w;
  8027. self.rightBottomX = 0;
  8028. rbX = w;
  8029. break;
  8030. case 6:
  8031. self.leftTopX = w;
  8032. ltX = 0;
  8033. self.leftBottomX = w;
  8034. lbX = 0;
  8035. break;
  8036. case 7:
  8037. lbX = self.leftBottomX =- w;
  8038. ltX = self.leftTopX =- w * 2;
  8039. self.rightBottomX = 0;
  8040. rbX = w * 2;
  8041. self.rightTopX =- w;
  8042. rtX = w;
  8043. break;
  8044. case 8:
  8045. lbY = self.leftBottomY = h;
  8046. self.leftTopY = h;
  8047. ltY = 0;
  8048. rbY = self.rightBottomY = h;
  8049. self.rightTopY = h;
  8050. rtY = 0;
  8051. break;
  8052. case 9:
  8053. self.leftBottomX = w;
  8054. lbX =- w;
  8055. self.leftTopX = w * 2;
  8056. ltX = 0;
  8057. rbX = self.rightBottomX = w * 2;
  8058. rtX = self.rightTopX = w * 3;
  8059. break;
  8060. case 5:
  8061. default:
  8062. self.leftTopX = w * 0.5;
  8063. self.leftTopY = h * 0.5;
  8064. self.rightTopX = w * 0.5;
  8065. self.rightTopY = h * 0.5;
  8066. self.leftBottomX = w * 0.5;
  8067. self.leftBottomY = h * 0.5;
  8068. self.rightBottomX = w * 0.5;
  8069. self.rightBottomY = h * 0.5;
  8070. ltX = 0, ltY = 0;
  8071. lbX = 0, lbY = h;
  8072. rtX = w, rtY = 0;
  8073. rbX = w, rbY = h;
  8074. }
  8075. var g = new LGraphics();
  8076. self.child.mask = g;
  8077. if (self.trans.direction == LTransition.OUT) {
  8078. var oltX = ltX, oltY = ltY, olbX = lbX, olbY = lbY, ortX = rtX, ortY = rtY, orbX = rbX, orbY = rbY;
  8079. ltX = self.leftTopX, ltY = self.leftTopY, lbX = self.leftBottomX, lbY = self.leftBottomY, rtX = self.rightTopX, rtY = self.rightTopY, rbX = self.rightBottomX, rbY = self.rightBottomY;
  8080. self.leftTopX = oltX, self.leftTopY = oltY, self.leftBottomX = olbX, self.leftBottomY = olbY, self.rightTopX = ortX, self.rightTopY = ortY, self.rightBottomX = orbX, self.rightBottomY = orbY;
  8081. }
  8082. LTweenLite.to(self, self.trans.duration, {
  8083. leftTopX: ltX,
  8084. leftTopY: ltY,
  8085. leftBottomX: lbX,
  8086. leftBottomY: lbY,
  8087. rightTopX: rtX,
  8088. rightTopY: rtY,
  8089. rightBottomX: rbX,
  8090. rightBottomY: rbY,
  8091. onComplete: self.wipeComplete,
  8092. onUpdate: self.wipeUpdate,
  8093. ease: self.trans.easing
  8094. });
  8095. },
  8096. pixelDissolveComplete: function(self) {
  8097. if (self.trans.direction == LTransition.OUT) {
  8098. self.child.mask.clear();
  8099. } else {
  8100. self.pixelDissolveUpdateRun();
  8101. }
  8102. self.child.mask = null;
  8103. if (self.trans.onComplete) {
  8104. self.trans.onComplete(self.child);
  8105. }
  8106. },
  8107. pixelDissolveUpdateRun: function() {
  8108. var self = this, g = self.child.mask, c = LGlobal.canvas, list;
  8109. g.clear();
  8110. g.add(function() {
  8111. c.save();
  8112. for (var i = 0; i < self.index; i++) {
  8113. list = self.list[i];
  8114. c.rect(list[0] * self.w, list[1] * self.h, self.w, self.h);
  8115. }
  8116. c.restore();
  8117. });
  8118. },
  8119. pixelDissolveUpdate: function(self) {
  8120. self.pixelDissolveUpdateRun();
  8121. if (self.trans.onUpdate) {
  8122. self.trans.onUpdate(self.child);
  8123. }
  8124. },
  8125. pixelDissolve: function() {
  8126. var self = this;
  8127. var g = new LGraphics();
  8128. self.child.mask = g;
  8129. LGlobal.mg = g;
  8130. self.w = self.child.getWidth() / self.trans.xSections, self.h = self.child.getHeight() / self.trans.ySections;
  8131. self.list = [];
  8132. for (var i = 0; i < self.trans.xSections; i++) {
  8133. for (var j = 0; j < self.trans.ySections; j++) {
  8134. self.list.push([i, j]);
  8135. }
  8136. }
  8137. self.index = 0;
  8138. var to = self.trans.xSections * self.trans.ySections;
  8139. if (self.trans.direction == LTransition.OUT) {
  8140. self.index = to;
  8141. to = 0;
  8142. }
  8143. self.list = self.list.sort(function(a, b) {
  8144. return Math.random() > 0.5;
  8145. });
  8146. self.pixelDissolveUpdateRun();
  8147. LTweenLite.to(self, self.trans.duration, {
  8148. index: to,
  8149. onComplete: self.pixelDissolveComplete,
  8150. onUpdate: self.pixelDissolveUpdate,
  8151. ease: self.trans.easing
  8152. });
  8153. }
  8154. };
  8155. LTransition.IN = "in";
  8156. LTransition.OUT = "out";
  8157. LTransition.Blinds = 1;
  8158. LTransition.Fade = 2;
  8159. LTransition.Fly = 3;
  8160. LTransition.Iris = 4;
  8161. LTransition.Curtain = 5;
  8162. LTransition.PixelDissolve = 6;
  8163. LTransition.Squeeze = 7;
  8164. LTransition.Wipe = 8;
  8165. LTransition.Zoom = 9;
  8166. return LTransition;
  8167. })();
  8168. var LIris = (function() {
  8169. function LIris() {}
  8170. LIris.SQUARE = 0;
  8171. LIris.CIRCLE = 1;
  8172. return LIris;
  8173. })();
  8174. var LTransitionManager = (function() {
  8175. function LTransitionManager(displayObject) {
  8176. this.child = displayObject;
  8177. }
  8178. LTransitionManager.prototype = {
  8179. startTransition: function(transParams) {
  8180. return LTransitionManager.start(this.child, transParams);
  8181. }
  8182. };
  8183. LTransitionManager.start = function(displayObject, transParams) {
  8184. var trans = new LTransition(displayObject, transParams);
  8185. trans.startTransition();
  8186. return trans;
  8187. };
  8188. return LTransitionManager;
  8189. })();
  8190. var LFlash = (function() {
  8191. function LFlash() {}
  8192. LFlash.SpriteSheetConvert = function(frames) {
  8193. var result = [], child;
  8194. for (var i = 0; i < frames.length; i++) {
  8195. child = frames[i];
  8196. result.push({
  8197. x: child.frame.x,
  8198. sx: child.spriteSourceSize.x,
  8199. y: child.frame.y,
  8200. sy: child.spriteSourceSize.y,
  8201. width: child.frame.w,
  8202. height: child.frame.h
  8203. });
  8204. }
  8205. return result;
  8206. };
  8207. return LFlash;
  8208. })();
  8209. var LString = {
  8210. trim: function(s) {
  8211. return s.replace(/(^\s*)|(\s*$)|(\n)/g, "");
  8212. },
  8213. leftTrim: function(s) {
  8214. return s.replace(/(^\s*)|(^\n)/g, "");
  8215. },
  8216. rightTrim: function(s) {
  8217. return s.replace(/(\s*$)|(\n$)/g, "");
  8218. },
  8219. numberFormat: function(s, l) {
  8220. if (!l || l < 1) {
  8221. l = 3;
  8222. }
  8223. s = String(s).split(".");
  8224. s[0] = s[0].replace(new RegExp('(\\d)(?=(\\d{' + l + '})+$)', 'ig'), "$1,");
  8225. return s.join(".");
  8226. },
  8227. isString: function(s) {
  8228. var p = /^([a-z]|[A-Z])+$/;
  8229. return p.exec(s);
  8230. },
  8231. isNumber: function(s) {
  8232. var p = /^\d+\.\d+$/;
  8233. return p.exec(s);
  8234. },
  8235. isInt: function(s) {
  8236. var p = /^\d+$/;
  8237. return p.exec(s);
  8238. }
  8239. };
  8240. LMath = LString;