Comunidad de diseño web y desarrollo en internet online

error 1037 los paquetes no se pueden anidar

Citar            
MensajeEscrito el 29 Ago 2012 06:43 pm
hola, ante todos gracias por su ayuda, tengo este problema con as3 y un cd interactivo que estoy realizando, quiero colocar un efecto de texto que encontré justamente es esta web, pero no tengo mucha experiencia con clases y as externos.

el codigo lo copie de aca: http://www.cristalab.com/tutoriales/clase-para-crear-texto-en-forma-aleatoria-con-actionscript-3-c63360l/

Bueno en el primer fotograma del .fla tengo este codigo:

Código ActionScript :

package ph.display.text{
   //
   import flash.text.TextField;
   import flash.utils.Timer;
   import flash.events.Event;
   import flash.events.TimerEvent;
   //
   public class TextHolder extends TextField {
      //
      private var field:TextField;
      private var txt:String;
      private var currrentString:String;
      private var chars:String;
      private var charsArray:Array;
      private var timer:Timer;
      private var txtLength:uint;
      private var counter:uint;
      private var speed:uint;
      private var incress:uint;
      private var ignoreW:Boolean;
      //
      //public function TextHolder():void {}; // como el costructor está vacio no es imprescindible
      //
      public function createRandomText(_txt:String, _speed:uint = 20, _incress:uint = 1, ignoreWhite:Boolean = false):void {
         //
         txt = _txt;
         speed = _speed;
         incress = _incress;
         ignoreW = ignoreWhite;
         //
         field = this;
         txtLength = txt.length;
         counter = 0;
         //
         var chars:String = "a b c d e f g h i j k l m n o p q r s t u v w x y z 1 2 3 4 5 6 7 8 9 0 ! @ # $ % ^ & * ( ) { } < > / ?";
         charsArray = chars.split(" ");
         currrentString = new String();
         //
         doTimer();
      }
      //
      private function doTimer():void {
         //
         timer = new Timer(speed, txtLength);
         timer.addEventListener(TimerEvent.TIMER, incressment);
         timer.start();
      }
      //
      private function incressment(e:Event = null):void {
         //
         currrentString += txt.substr(counter, incress);
         counter += incress;
         field.text = (currrentString + rand(txtLength - counter));
      }
      //
      private function rand(t:uint):String {
         //
         var randomText:String = "";
         //
         for (var i:int = 0; i < t; i++) {
            //
            if (!ignoreW && txt.charAt(counter + i) == " ") {
               randomText += " ";
            } else {
               randomText += charsArray[uint(Math.random() * charsArray.length)];
            }
         }
         return randomText;
      }
      //
   }// class
}// package

y en el archivo as tengo este otro:

Código ActionScript :

package {
   //
   import flash.display.MovieClip;
   import flash.text.TextFieldAutoSize;
   import ph.display.text.TextHolder;
   //
   public class Main extends MovieClip {
      //
      private var randTxt:TextHolder;
      private var txtString:String;
      //
      public function Main() {
         //
         buildText();
      }
      //
      private function buildText():void {
         //
         txtString = "Lorem ipsum dolor sit amet.";
         //
         randTxt = new TextHolder();
         randTxt.createRandomText(txtString);
         randTxt.autoSize = TextFieldAutoSize.LEFT;
         //
         addChild(randTxt);
      }
      //
   }// class
}// package

en el archivo fla, en propiedades coloque en clase: Main

al probar mi archivo me sale: error 1037 los paquetes no se pueden anidar, estoy usando flash cs6 y publicacion as3 y flash 11.2.

espero haberme explicado bien y espero su ayuda, de verdad gracias.

Por rigonatto

9 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 29 Ago 2012 07:01 pm
Una clase no va en la línea de tiempo, va en un archivo .as en la misma ruta que indica el paquete, en este caso en el directorio ph/display/text/TextHolder.as

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 29 Ago 2012 07:18 pm
hola, gracias por responder!!, pero según el tutorial de donde lo copie (esta la referencia al principio del post) o por lo menos lo que yo entendí fue lo que puse. resumo: la primer parte del código que puse lo hice en el archivo fla. la segunda parte en el archivo as (ojo que parece que el código es continuado, pero esta dividido en dos). lo segui del tuto de esta web.

seguramente los utilice mal, pero no se como arreglarlos. gracias

Por rigonatto

9 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 29 Ago 2012 07:36 pm
La primera parte va en el archivo ph/display/text/TextHolder.as (la ruta arranca desde donde esta el fla)
La segunda parte va en el archivo Main.as
Main es la clase del documento

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 30 Ago 2012 12:52 pm
Muchas gracias, ya lo resolví con la ayuda que me diste, gracias por tu tiempo!!

Por rigonatto

9 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 30 Ago 2012 04:29 pm
bueno ahora anda perfecto, el tema es que el efecto lo quiero usar en algún momento indicado y no al principio de la pelicula, pense en vincularlo a un movieclips de la libreria, la vinculacion queda bien, pero me tira el siguiente error: 5000 la clase TextHolder debe tener "flash.dispay.MovieCplips" como subclase ya que esta vinculada a un simbolo de biblioteca de dicho tipo.

pero en la clase TextHolder tengo asi:

package random{
import flash.display.MovieClip
import flash.text.TextField;
import flash.utils.Timer;
import flash.events.Event;
import flash.events.TimerEvent;
etc etc,

en resumen, tengo colocado lo de flash.display.MovieClip.
en Main tambien tengo importado la clase

donde estará el error?

muchas gracias!!

Por rigonatto

9 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 30 Ago 2012 04:32 pm
La función buildText en Main te muestra como se usa la clase, linkarlo a un MC an la librería no tiene sentido. Toma esa funcion como ejemplo de como instanciar el efecto y usalo en el momento que lo necesites.

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 03 Sep 2012 12:30 pm
bueno, no lo pude hacer, tome lo que me dijiste pero no logro utilizar el código en el momento que yo quiera, se nota que me falta mucho con este tema, me estoy esforzando pero todavia no lo resuelvo, gracias igual.

Por rigonatto

9 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 03 Sep 2012 01:32 pm
Así agregas el texto:

Código ActionScript :


         import ph.display.text.TextHolder;

         txtString = "Lorem ipsum dolor sit amet.";
         randTxt = new TextHolder();
         randTxt.createRandomText(txtString);
         randTxt.autoSize = TextFieldAutoSize.LEFT;
         addChild(randTxt);


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 03 Sep 2012 06:14 pm
POR FIN!!! muchas gracias por tu ayuda!!!!! gracias de verdad!!!

Por rigonatto

9 de clabLevel



Genero:Masculino  

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.