kafunga Postado Maio 7, 2008 Denunciar Share Postado Maio 7, 2008 Galera alguém pode me ajudar a duplicar um movie clip em AS3?Grato desde já. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Anti-puff Postado Maio 8, 2008 Denunciar Share Postado Maio 8, 2008 A função nativa duplicateMovieClip foi removida do AS3, para duplicar um objeto precisa do auxilio de classes de Bitmap ou de DisplayObject...Segue o link de uma classe para duplicar objetos no AS3:http://www.senocular.com/flash/actionscrip...isplayObject.as Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kafunga Postado Maio 8, 2008 Autor Denunciar Share Postado Maio 8, 2008 Muito grato pela ajuda. Mais amigo, estou com dificuldade de usá-la.Assim como problemas com package, aparece um erro assim: "Packages cannot be nested".Grato desde já. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Anti-puff Postado Maio 8, 2008 Denunciar Share Postado Maio 8, 2008 Neste link há um exemplo do uso atraves de uma classe de proxy:http://www.kirupa.com/forum/showpost.php?p...p;postcount=176 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kafunga Postado Maio 8, 2008 Autor Denunciar Share Postado Maio 8, 2008 Mano, ainda não estou conseguindo usar, pode me ajudar? Olha como estou fazendo:A classe que me passou está assim:package com.senocular.displey { import flash.display.DisplayObject; import flash.geom.Rectangle; /** * duplicateDisplayObject * creates a duplicate of the DisplayObject passed. * similar to duplicateMovieClip in AVM1. If using Flash 9, make sure * you export for ActionScript the symbol you are duplicating * @param target the display object to duplicate * @param autoAdd if true, adds the duplicate to the display list * in which target was located * @return a duplicate instance of target */ public function duplicateDisplayObject(target:DisplayObject, autoAdd:Boolean = false):DisplayObject { var targetClass:Class = Object(target).constructor; var duplicate:DisplayObject = new targetClass() as DisplayObject; // duplicate properties duplicate.transform = target.transform; duplicate.filters = target.filters; duplicate.cacheAsBitmap = target.cacheAsBitmap; duplicate.opaqueBackground = target.opaqueBackground; if (target.scale9Grid) { var rect:Rectangle = target.scale9Grid; // Flash 9 bug where returned scale9Grid is 20x larger than assigned rect.x /= 20, rect.y /= 20, rect.width /= 20, rect.height /= 20; duplicate.scale9Grid = rect; } // add to target parent's display list // if autoAdd was provided as true if (autoAdd && target.parent) { target.parent.addChild(duplicate); } return duplicate; } } E estou tentando utilizar assim: // Controla Tiros function atira (mou:MouseEvent){ numTiros++; var Tirao:DisplayObject = new DisplayObject(); Tirao.duplicateDisplayObject(tiro,false); addChild(Tirao); Tirao.x = 20; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Anti-puff Postado Maio 9, 2008 Denunciar Share Postado Maio 9, 2008 Em meu teste o duplicateDisplayObject só funcionou com loader apenas, no seu caso poder importar um MC direto da Library como uma classe...Pro exemplo você cria um MC e ele fica na library, nas propriedades de linkage selecione "Export for ActionScript" e "Export in first frame", coloque um nome em Class, por exemplo "MyClass"... deixe em Base Class "flash.display.MovieClip"...Agora no Editor de action coloque:import flash.display.* var t1 = new MyClass(); this.addChild( t1 ); var t2 = new MyClass(); t2.x = 200; this.addChild( t2 );isso pode ser colocado dentro de uma função chamada de um MouseEvent Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Pooh Postado Novembro 24, 2009 Denunciar Share Postado Novembro 24, 2009 package com.senocular.display { import flash.display.DisplayObject; import flash.geom.Rectangle; import flash.system.Capabilities; // version check for scale9Grid bug /** * duplicateDisplayObject * creates a duplicate of the DisplayObject passed. * similar to duplicateMovieClip in AVM1. If using Flash 9, make sure * you export for ActionScript the symbol you are duplicating * @param target the display object to duplicate * @param autoAdd if true, adds the duplicate to the display list * in which target was located * @return a duplicate instance of target */ public function duplicateDisplayObject(target:DisplayObject, autoAdd:Boolean = false):DisplayObject { var targetClass:Class = Object(target).constructor; var duplicate:DisplayObject = new targetClass() as DisplayObject; // duplicate properties duplicate.transform = target.transform; duplicate.filters = target.filters; duplicate.cacheAsBitmap = target.cacheAsBitmap; duplicate.opaqueBackground = target.opaqueBackground; if (target.scale9Grid) { var rect:Rectangle = target.scale9Grid; if (Capabilities.version.split(" ")[1] == "9,0,16,0"){ // Flash 9 bug where returned scale9Grid as twips rect.x /= 20, rect.y /= 20, rect.width /= 20, rect.height /= 20; } duplicate.scale9Grid = rect; } // Flash 10 only // duplicate.graphics.copyFrom(target.graphics); // add to target parent's display list // if autoAdd was provided as true if (autoAdd && target.parent) { target.parent.addChild(duplicate); } return duplicate; } } Eu peguei apenas a função function duplicateDisplayObject(target:DisplayObject, autoAdd:Boolean = false):DisplayObject { var targetClass:Class = Object(target).constructor; var duplicate:DisplayObject = new targetClass() as DisplayObject; // duplicate properties duplicate.transform = target.transform; duplicate.filters = target.filters; duplicate.cacheAsBitmap = target.cacheAsBitmap; duplicate.opaqueBackground = target.opaqueBackground; if (target.scale9Grid) { var rect:Rectangle = target.scale9Grid; if (Capabilities.version.split(" ")[1] == "9,0,16,0"){ // Flash 9 bug where returned scale9Grid as twips rect.x /= 20, rect.y /= 20, rect.width /= 20, rect.height /= 20; } duplicate.scale9Grid = rect; } // Flash 10 only // duplicate.graphics.copyFrom(target.graphics); // add to target parent's display list // if autoAdd was provided as true if (autoAdd && target.parent) { target.parent.addChild(duplicate); } return duplicate; } e apliquei como: var qualquerCoisa:QualquerClasse = new QualquerClasse(args[]); var copia:DisplayObject = Duplicate(qualquerCoisa,true); //a partir daqui você pode usar o DO copia que vai ser exatamente como qualquerCoisa caso precise de algum atributo adicional copiado como Name etc... é so alterar a função que diz "duplicate.Atributo = target.Atributo" e você tera o que quiser copiado =_=...simples Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
kafunga
Galera alguém pode me ajudar a duplicar um movie clip em AS3?
Grato desde já.
Link para o comentário
Compartilhar em outros sites
6 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.