Pelo jeito você tem BASTANTE cálculo para fazer hem? rs Esse erro acontece quando você trava a renderização por mais de 15 segundos. O que acontece é que não existe renderização direta no Actionscript durante a execução de um código, só depois dele. Então se houver um loop muito grande dentro de um bloco de código, por exemplo, o próprio Flash Player reconhece como um travamento e, para não travar a máquina do usuário, ele pergunta ao usuário se quer parar de executar seu código.
A solução mais comum para este tipo de problema é dividir o código em blocos de execução, usando timers ou o próprio enterFrame do Sprite. Ou então rever o código para descobrir o porque de estar lento e limar algumas partes, ou executá-las depois ;) -- Gustavo Y. Kawamoto 2009/12/8 Fredy Gadotti <thief...@gmail.com> > Olá pessoal, > > > estava refatorando meu código pois ele estava começando a ficar muito > horrível, ai fui aplicar o padrão Strategy e meu código começou a dar um > erro que nunca tinha visto antes. > E procurando no Google, tinha apenas duas páginas comentando sobre isso, e > nenhuma foi de real ajuda. > > Bom, o que fiz para simular o erro. > > Eu criei, uma interface com os métodos que eu precisava. > Na classe onde ia aplicar a estratégia eu criei uma variável do tipo da > interface e criei um setter para instanciar a classe concreta que aplica > minha estratégia. > > Mais ou menos assim: > > *var _strategy:IStrategy;* > * > * > *private function set strategy(value:IStrategy):void {* > * _stragety = value;* > * > * > * createHeaders(); //* talvez o erro seja aqui, mas não > tenho certeza, será que fica muito pesado chamar dentro do setter? deveria > fazer como? *creationComplete?* > *}* > * > * > *private function createHeaders():void {* > * _stragety.width = 50; // *valores ficticios > * _strategy.daysGap = 365; // *valores ficticios > * _strategy.view = this;* > * _strategy.createHeaders(); * > *}* > > > > ai ele vai chamar uma das classes concretas que tem o createHeaders() e ele > faz um monte de calculo para criar meus cabeçalhos. > E logo depois de chamar a updateDisplayList, ele dá o pau. > > Antes de refatorar, eu criava tudo dinamicamente uma coleção de 3000 > objetos e não dava problema, e todo o código ficava dentro de uma classe com > if e else encadeados. Simplesmente encapsulei a lógica, e agora mesmo com > uma coleção de dados pequena e ele dá o erro, com certa de 20 objetos. > > *Segue o stack trace:* > > Error: Error #1502: Um script foi executado por mais tempo que o período > limite padrão de 15 segundos. > at > mx.managers.layoutClasses::PriorityQueue/removeSmallestChild()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\managers\layoutClasses\PriorityQueue.as:214] > at > mx.managers::LayoutManager/validateClient()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\managers\LayoutManager.as:895] > at > mx.core::UIComponent/validateNow()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\core\UIComponent.as:5550] > at > mx.core::Container/createOrDestroyScrollbars()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\core\Container.as:4481] > at > mx.core::Container/createScrollbarsIfNeeded()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\core\Container.as:4349] > at > mx.core::Container/createContentPaneAndScrollbarsIfNeeded()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\core\Container.as:4165] > at > mx.core::Container/validateDisplayList()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\core\Container.as:2702] > at > mx.managers::LayoutManager/validateDisplayList()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\managers\LayoutManager.as:602] > at > mx.managers::LayoutManager/doPhasedInstantiation()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\managers\LayoutManager.as:657] > at Function/http://adobe.com/AS3/2006/builtin::apply() > at > mx.core::UIComponent/callLaterDispatcher2()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\core\UIComponent.as:8460] > at > mx.core::UIComponent/callLaterDispatcher()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\core\UIComponent.as:8403] > > > > > Bom, sei que o email ficou um pouco longo, mas agradeceria se alguém > tivesse alguma sugestão. > > > > > Att, > > Fredy Gadotti. > > > > --~--~---------~--~----~------------~-------~--~----~ Você recebeu esta mensagem porque está inscrito na lista "flexdev" Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com Para sair da lista, envie um email em branco para flexdev-unsubscr...@googlegroups.com Mais opções estão disponíveis em http://groups.google.com/group/flexdev -~----------~----~----~----~------~----~------~--~---