Comunidad de diseño web y desarrollo en internet online

OOP Clase personalizada, no funciona attachmovie

Citar            
MensajeEscrito el 03 Mar 2007 07:13 pm
Hola, tengo la siguiente clase.

Código :

class Square {
   public var target_mc:MovieClip;
   public function Square(c:MovieClip){
      this.target_mc = c;
   }
   public function drawMask(x_mask, y_mask, w_mask, h_mask):Void{
      this.createEmptyMovieClip("mask_mc", 1);
      this.mask_mc.beginFill(0x000000, 50);
      this.mask_mc.moveTo(x_mask, y_mask);
      this.mask_mc.lineTo(x_mask + w_mask, y_mask);
      this.mask_mc.lineTo(x_mask + w_mask, y_mask + h_mask);
      this.mask_mc.lineTo(x_mask, y_mask + h_mask);
      this.mask_mc.lineTo(x_mask, y_mask);
   }
   public function addMask():Void{
      this.attachMovie("maskLib", "maskLib", 2);
   }
} 


El problema es que no me reconoce ni el attachmovie, ni el createEmptyMovieClip :(

Para el atachmovie tengo un clip vinculado con ese identificador.
La clase , como veran no hereda nada. asi que intente heredar de MovieClip
Intente heredar de Movieclip y esto sucedio: ( class Square extends MovieClip{ )
Para el attachmovie si ponia

Código :

   public function addMask():Void{
      attachMovie("maskLib", "maskLibclip", 2);
   }

No me da ningun error

Código :

   public function addMask():Void{
      attachMovie("maskLib", "maskLibclip", 2);
      maskLibclip._x = 0;
      maskLibclip._y = 0;
   }

Me dice: No hay ninguna propiedad que lleve por nombre 'maskLibclip'.

Con el createEmptyMovieClip me dice: No hay ningún método que lleve por nombre 'mask_mc'. y otros 5 errores en cada llamada.

Cuando compilo sin heredar de movieclip, aunado a estos errores, me dice que no hay metodos que lleven por nombre createEmptyMovieClip, o attachMovie

Ya le he buscado variaciones, usando this, y no funciona nada.
Me puse a buscar en internet, en la ayuda de flash, y di con esto, que al parecer podria ser mi solucion
Object.registerClass(”miClip”, miClase);
pero no entiendo como carajos usarlo :( :( :( :cry: :cry: :cry: :cry: :cry:

Ayuda de flash dice escribió:


Asocia un símbolo de clip de película a una clase Object de ActionScript


Ya le he probado y no doy.
Espero su ayuda, y les doy la gracias de antemano

Por rolv

Claber

2000 de clabLevel

3 tutoriales

 

msie
Citar            
MensajeEscrito el 03 Mar 2007 07:32 pm
Cambia el this por target_mc

Código :

target_mc.createEmptyMovieClip("mask_mc", 1);
target_mc.attachMovie("maskLib", "maskLib", 2);

Por Zguillez

BOFH

10744 de clabLevel

85 tutoriales
17 articulos
3 ejemplos

Genero:Masculino   Bastard Operators From Hell Héroes Team Cristalab Editores

BCN

firefox
Citar            
MensajeEscrito el 05 Mar 2007 03:16 pm
Pero mi idea no es esa Zguilles, todo se puede resumir a: (Lo que me pides funciona perfecto, pero para mis fines no me funciona)

como creo un movieclip (con createEmptyMoveiclip) desde mi clase?
como atacho un movieclip de la biblioteca, desde mi clase?

Muchas gracias.

Por rolv

Claber

2000 de clabLevel

3 tutoriales

 

firefox
Citar            
MensajeEscrito el 05 Mar 2007 04:42 pm
Lo que te decia es que no puedes usar this dentro de una clase para crear o atachar un clip. (this hace referencia a la clase) Has de utilizar la ruta de la linea de tiempo en donde quieres colocar el movieclip.

Esta ruta la puedes pasar como parámetro en el constructor de la clase:

Código :

class MiClip
{
   private var ruta;
   //--------------
   public function MiClip(qRuta:MovieClip)
   {
      ruta = qRuta;
   }
   public function creaMovieClipVacio(nombre:String, prof:Number)
   {
      ruta.createEmptyMovieClip(nombre, prof);
   }
   public function atachaClip(clip:String, nombre:String, prof:Number)
   {
      ruta.attachMovie(clip, nombre, prof);
   }
}

Código :

import MiClip;
var clip:MiClip = new MiClip(this);
clip.creaMovieClipVacio("mc", 1);
clip.atachaClip("clip", "mc1", 2);

Por Zguillez

BOFH

10744 de clabLevel

85 tutoriales
17 articulos
3 ejemplos

Genero:Masculino   Bastard Operators From Hell Héroes Team Cristalab Editores

BCN

firefox
Citar            
MensajeEscrito el 05 Mar 2007 06:19 pm
Aqui cambio un poco la cosa, no puedes pasarle parametros al constructor, pero puedes inicializar propiedades con el cuarto parametro de attachmovie que es con lo que crearas la instancia de la clase.


Código :

dynamic class Square extends MovieClip{
   static var className:String = "__Packages.Square";
   static var constructor:Function = Square;
   static var mcLinked = Object.registerClass(className, constructor);
   public var a:String;
   
   public function Square(){
      trace(this.a);
   }
   public function drawMask(x_mask, y_mask, w_mask, h_mask){
      this.createEmptyMovieClip("mask_mc", this.getNextHighestDepth());
      this.mask_mc.beginFill(0x000000, 50);
      this.mask_mc.moveTo(x_mask, y_mask);
      this.mask_mc.lineTo(x_mask + w_mask, y_mask);
      this.mask_mc.lineTo(x_mask + w_mask, y_mask + h_mask);
      this.mask_mc.lineTo(x_mask, y_mask + h_mask);
      this.mask_mc.lineTo(x_mask, y_mask);
     this.mask_mc.endFill();
   }
   public function addMask():Void{
      this.attachMovie("maskLib", "maskLib", 2);
   }
}


Código :

import Square;

attachMovie(Square.className,"nuevo",1,{a:"Inicalizada"});

nuevo.drawMask(10,10,100,100);


saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox

 

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