Comunidad de diseño web y desarrollo en internet online

Adios al attachMovie y a mis pocos conocimientos

Citar            
MensajeEscrito el 19 Ago 2008 10:20 am
ÉSTO era antes con attachMovie, tenía el nombre del clip duplicado accesible e identificado

Código ActionScript :

function duplicar() {
   attachMovie("gris", ("dupli"+d), d+1);
   this["dupli"+d]._x = 285.9;
   this["dupli"+d]._y = 29.1;
   this["dupli"+d].startDrag(true, 159, 30, 295, 245);
   _root["dupli"+d].onMouseUp = function() {
      this.stopDrag();
      
   };
}

PERO AHORA

Código ActionScript :

//ya importadas las clases import flash.display.*  import flash.events.*
//Con la ver. 3.0 
function duplicar(event:MouseEvent):void {
   for (var f:int = 0; f < contador; f++) {
   //siendo animaseto un MovieClip de la biblioteca
   var clipseto:MovieClip=new animaseto();
   addChild(clipseto);
   clipseto.x=150;
   clipseto.y=220;
   }
}
//siendo clip1 un boton ya colocado en el escenario
   clip1.addEventListener(MouseEvent.CLICK, duplicar);

Al importar dinámicamente los Movieclip no se como identificarlos, la estructura del bucle está mal necesito que se me permitiese poder manejar los clipsetos uno por uno
¿Alguien me puede echar una mano? TAL VEZ con clipseto.name = "clipseto"+i (pero no veo la estructura)
Gracias de antemano

editado por eldervaz

Por araña

35 de clabLevel



 

msie
Citar            
MensajeEscrito el 19 Ago 2008 11:10 am
Correcto, le das un name en el bucle y le agregas un listener al evento CLICK
Si es indistinto lo que haces con cada uno, ni siquiera necesitas darle nombre, ya que a traves del evt.target recibes una referencia al MC que genera el evento, luego evt.target.name te dice el nombre del MC que lo genera

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 19 Ago 2008 11:21 am
No te endiendo bien me lo puedes explicar para tontos, tomando como ejemplo el modelo. gracias

Por araña

35 de clabLevel



 

msie
Citar            
MensajeEscrito el 19 Ago 2008 11:35 am
Yep, ejemplo

Código :

function duplicar(event:MouseEvent):void {
   for (var f:int = 0; f < contador; f++) {
     //siendo animaseto un MovieClip de la biblioteca
    var clipseto:MovieClip=new animaseto();
    addChild(clipseto);
    clipseto.name = "clipseto"+i
    clipseto.addEventListener(MouseEvent.CLICK, hacerAlgo);
    clipseto.x=150;
    clipseto.y=220;
 }
}
function hacerAlgo(evt:Event):void{
   trace(evt.target.name+" clickado")
}


No lo explico para tontos porque un tonto no lo entendería ;)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 19 Ago 2008 01:55 pm
Perdón por el retraso.
Me parece muy buena tu respuesta, queda entendido, pero quiero recoger todas las posiciones de cada clipseto (en Array) y tambien unas variables (todas con el mismo nombre) definidas dentro de cada clipseto generado dinámicamente.
y sigo sin saber cómo acceder a esos clipsetos para poder hacerlo,
A (evt.target.name) no le puedo sacar las propiedades de pos_x, pos_y ----ni a-----(evt.target.name.variable) el valor de la variable incrustada. He probado con (clipseto+i).x ---y con---- (clipseto+i).y pero me recoge siempre los mismos valores para todos los clipsetos.
He aquí el ejemplo
function duplicar(event:MouseEvent):void {
var i:int;
var clipseto:MovieClip=new animaseto();
for (i= 0; i < contador; i++) {
addChild(clipseto);//se que empieza en el level 18
//Añado lo tuyo
clipseto.name = "clipseto"+i;

clipseto.buttonMode = true;
clipseto.x=150;
clipseto.y=220;

clipseto.addEventListener(MouseEvent.MOUSE_DOWN, miFuncion);
clipseto.addEventListener(MouseEvent.CLICK, hacerAlgo);

//GUARDA LAS POSI
function hacerAlgo(evt:Event):void {
trace("nombre del target"+evt.target.name+" clickado");

mi = new Array();
for (var h=0; h<=(contador); h++) {
var nodosm = "Datos Array= "+mi.length;
mi[0] = "_";
mi[h] = [','+'"'+((clipseto).modelo)+'"']+','+((clipseto).vista)+','+((clipseto).x)+','+((clipseto).y)+','+'_';

root.sss.htmlText = mi.join("");//caja donde veo los valores

}
}
}
}
No se si me puedes orientar algo, GRACIAS
PD: no quiero resultar pesado aun a sabiendas de que lo soy.

Por araña

35 de clabLevel



 

msie
Citar            
MensajeEscrito el 19 Ago 2008 03:17 pm
Recuerda siempre darle formato a tu código, sino resulta ilegible
Para acceder a la propiedad x e y sería:

Código :

function hacerAlgo(evt:Event):void{
    trace("Posición x->"+evt.target.x)
    trace("Posición y->"+evt.target.y)
 }


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 19 Ago 2008 03:45 pm
function hacerAlgo(evt:Event):void{
trace("Posición x->"+(evt.target+i).x)
trace("Posición y->"+(evt.target+i).y)
}
pero dentro del bucle ¿sería esto?

Por araña

35 de clabLevel



 

msie
Citar            
MensajeEscrito el 19 Ago 2008 04:15 pm
Si miras la función, verás que no está dentro del bucle, sino fuera, y responde al onPress sobre cada uno de ellos

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 19 Ago 2008 05:19 pm
Gracias, por tu dedicación, me doy por vencido no doy con lo que busco
Me repito muchas gracias.
Un saludo

Por araña

35 de clabLevel



 

msie
Citar            
MensajeEscrito el 19 Ago 2008 05:39 pm
¿Y que es lo que quieres manejar específicamente?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 19 Ago 2008 06:06 pm
Te agrazezco el interés
Con el ejemplo que tenemos se consigue que al hacer la llamada a la función duplicar() nos aparece un movieClip (clipseto) al pulsar otra vez salen otros 2 (clipsetos) más y así proporcionalmente. NO es eso
La idea es de sólo uno cada vez que se clikea y además esos (clipsetos) se deben poder manejar moviéndolos con el raton de forma independiente mediante funciones del tipo:
function miFuncion (evt:MouseEvent):void {
evt.target.startDrag();
evt.target.alpha=0.5;
}
function parado(evt:MouseEvent):void {
evt.target.stopDrag();
evt.target.alpha=1;
}
a la vez de permitir que con la pulsación de una tecla el clip gire

function onKeyDown(tecla:KeyboardEvent):void {
trace("pulsé la tecla: "+tecla.keyCode);
if (tecla.keyCode==32) {
evt.target.nextFrame();
}

Para posteriormente con otra función ir guardando todas las posiciones x e y de cada clipseto más el valor de una variable declarada en cada frame del clipseto que nos identifica el frame en el que está detenido, dentro de un Array.
Esto lo hice ya en ActionScript 2 pero no se en el 3.0
ejmplo: http://usuarios.lycos.es/jmsen/cubo03.html

Como ves es algo complicado de resolver a bote pronto, por lo menos para mí, si sabes de algún sitio donde pueda obtener información te lo agradezco.

Por araña

35 de clabLevel



 

msie
Citar            
MensajeEscrito el 19 Ago 2008 06:31 pm
Ok, he aquí el ejercicio de los cuadraditos arrastrables en AS3. Lo hice todo en code así simplemente pegas el code en una peli nueva y lo estudias, luego ya lo adaptas a tus necesidades

Código ActionScript :

for(var i:Number=0; i<10; i++){
  var t:Sprite = new Sprite()
  t.graphics.beginFill(0x000000, 1)
  t.graphics.drawRect(0,0,10,10)
  t.graphics.endFill()
  addChild(t)
  t.x = int(Math.random()*t.stage.stageWidth)
  t.y = int(Math.random()*t.stage.stageHeight)
  t.addEventListener(MouseEvent.MOUSE_DOWN, arrastrar)
  t.addEventListener(MouseEvent.MOUSE_UP, soltar)  
}
function arrastrar(evt:MouseEvent):void{
   var obj:Sprite = evt.target as Sprite
    obj.startDrag()   
}
function soltar(evt:MouseEvent):void{
  var obj:Sprite = evt.target as Sprite
  obj.stopDrag()   
}


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 19 Ago 2008 06:40 pm
Lo estudiaré, es para mi nueva web personal.
Espero poder terminarla ahora que tengo algo de tiempo.
Gracias, así da gusto.

Por araña

35 de clabLevel



 

msie
Citar            
MensajeEscrito el 22 Ago 2008 09:23 am
No puedo más :shock: me he quedado atascado he usado parte de tu código adaptándolo lo mejor que se, y esto es lo que tengo, al ejecutarlo me toma como posiciones todas iguales (-y para cada cuadro a de tomar su posición y así tener como resultado un Array con todas las posiciones de cada cuadro y su nombre), ¿me podrías hechar una mano?
Mil GRACIAS.
CODIGO
[code]
import flash.display.MovieClip;
import flash.display.*;
import flash.events.*;
var conta:int=0;
this.ff.addEventListener(MouseEvent.CLICK,duplicarlo);
function duplicarlo(evt:MouseEvent):void {
var t:MovieClip = new MovieClip();
for (var i:Number=0; i<=(conta); i++) {
t.name = "Pieza" + conta;
t.graphics.beginFill(0x000000, 1);
t.graphics.drawRect(0,0,10,10);
t.graphics.endFill();
addChild(t);
t.x = 123;//int(Math.random()*t.stage.stageWidth) ;
t.y = 56;//int(Math.random()*t.stage.stageHeight) ;
t.addEventListener(MouseEvent.MOUSE_DOWN,arrastrar);
t.addEventListener(MouseEvent.MOUSE_UP,soltar);



}
conta=conta+1;
}
function arrastrar(evt:MouseEvent):void {
var obj:Sprite = evt.target as Sprite;
obj.startDrag();
}
function soltar(e:MouseEvent):void {
var obj:MovieClip = e.target as MovieClip;
obj.stopDrag();
var posix=obj.x;
var posiy=obj.y;
trace("valores a guardar = "+ posix + " "+ posiy);
var mio:Array = new Array();
for (var h=0; h<(conta); h++) {
mio[h] = [(obj.name)+','+(posix)+','+(posiy)];
}
campo.text =mio.join("/");//lo separamos con la barra


}
//esto es la caja de texto
var campo:TextField=new TextField();
addChild(campo);

var formato:TextFormat=new TextFormat();
formato.size=10;
formato.font="Verdana";
formato.color=0xFFFFFF;
campo.multiline=true;
campo.border=true;
campo.wordWrap=true;
campo.width=250;
campo.height=126;
campo.x=40;
campo.y=90;
campo.background=true;
campo.backgroundColor=0x000000;
campo.defaultTextFormat=formato;
[code]

Por araña

35 de clabLevel



 

msie
Citar            
MensajeEscrito el 22 Ago 2008 09:29 am
¿Cual es la idea? ¿Tener guardadas las posiciones de todos los clips en un array?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 22 Ago 2008 09:30 am
perdon no ha salido formateado este SÍ.

Código :

import flash.display.MovieClip;
import flash.display.*;
import flash.events.*;
var conta:int=0;
this.ff.addEventListener(MouseEvent.CLICK,duplicarlo);
function duplicarlo(evt:MouseEvent):void {
   var t:MovieClip = new MovieClip();
   for (var i:Number=0; i<=(conta); i++) {
      t.name = "Pieza" + conta;
      t.graphics.beginFill(0x000000, 1);
      t.graphics.drawRect(0,0,10,10);
      t.graphics.endFill();
      addChild(t);
      t.x = 123;//int(Math.random()*t.stage.stageWidth) ;
      t.y = 56;//int(Math.random()*t.stage.stageHeight) ;
      t.addEventListener(MouseEvent.MOUSE_DOWN,arrastrar);
      t.addEventListener(MouseEvent.MOUSE_UP,soltar);


         }
   conta=conta+1;
}
function arrastrar(evt:MouseEvent):void {
   var obj:Sprite = evt.target as Sprite;
   obj.startDrag();
}
function soltar(e:MouseEvent):void {
   var obj:MovieClip = e.target as MovieClip;
   obj.stopDrag();
   var posix=obj.x;
   var posiy=obj.y;
   trace("valores a guardar = "+ posix + " "+ posiy);
   var mio:Array = new Array();
   for (var h=0; h<(conta); h++) {
      mio[h] = [(obj.name)+','+(posix)+','+(posiy)];
      
   }
   campo.text =mio.join("/");
   

}
//caja de texo
var campo:TextField=new TextField();
addChild(campo);
var formato:TextFormat=new TextFormat();
formato.size=10;
formato.font="Verdana";
formato.color=0xFFFFFF;
campo.multiline=true;
campo.border=true;
campo.wordWrap=true;
campo.width=250;
campo.height=126;
campo.x=40;
campo.y=90;
campo.background=true;
campo.backgroundColor=0x000000;
campo.defaultTextFormat=formato;

Por araña

35 de clabLevel



 

msie
Citar            
MensajeEscrito el 22 Ago 2008 09:31 am
Efectivamente, como eres tan rápido no me ha dado tiempo ni a volverlo a formatear, gracias

Por araña

35 de clabLevel



 

msie
Citar            
MensajeEscrito el 22 Ago 2008 10:23 am
El acceso a propiedades con nombres únicos es mas fácil en una estructura de objetos, pr ejemplo en el loop de duplicación:

db["Pieza" + conta] = {posx:123, posy:56};

db es un objeto que declaras al principio (fuera de la función) Luego solo actualizas esa posición en concreto:

Código ActionScript :

function soltar(e:MouseEvent):void {
    var obj:MovieClip = e.target as MovieClip;
    obj.stopDrag();
    db[obj._name] = {posx:obj.x, posy:obj.y}
    .....


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 22 Ago 2008 11:03 am
Ni me entero :oops:

Por araña

35 de clabLevel



 

msie
Citar            
MensajeEscrito el 22 Ago 2008 11:14 am
Ok, ejercicio 1 ¿que es un objeto? Es un contenedor arbitrario de información. Tengo a A y B en mi objeto, que a su vez sonb objetos

Código ActionScript :

miObjeto = new Object()
miObjeto.A = {Nombre:"María", Edad:18}
miObjeto.B = {Nombre:"Pepe", Edad:20}
trace(miObjeto.A.Nombre)  //sale María
miObjeto.A.Nombre = "Juana"
trace(miObjeto.A.Nombre)  //sale Juana


Mirate el tema de objetos y propiedades, el array no es la única forma de guardar info

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 22 Ago 2008 11:20 am
Ok , gracias

Por araña

35 de clabLevel



 

msie
Citar            
MensajeEscrito el 22 Ago 2008 03:36 pm
No avanzo, necesito que se quede registrado en un array para exportar toda la información de golpe en texto a una BD parseado PHP y poder volver a sacar la información en cualquier momento volviendose a reconstruir el mapa de las posiciones de los Clips.
Digamos que es como sacar una foto a las figuras y en cualquier momento volverla a reconstruir exactamente como estaba.
Si no me dices algo Jorge no pasa nada bastante me has ayudado YA. Gracias.

Por araña

35 de clabLevel



 

msie
Citar            
MensajeEscrito el 22 Ago 2008 04:36 pm
Para recorrer un objeto

Código :

for(var i in miObjecto){
   trace(i+":"+miObjecto[i].posx)
}


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 22 Ago 2008 06:28 pm
Pensaba que adaptar lo que tengo en ActionScript 2 al 3 me sería más fácil, pero creo que esto me empieza a sobrepasar.
Mi primera intención era adaptarlo y aprovechar al máximo lo que tenía en 2.0 pero posiblemente como dices es más complicado, aun así es una pena tener que volver a reprogramarlo entero, si como veo no tengo soluciones parecidas a cómo se hizo con el 2.0 -usando Arrays- necesitaría más conocimientos siento no haber dado con ello. Gracias MIL.

Por araña

35 de clabLevel



 

msie
Citar            
MensajeEscrito el 22 Ago 2008 07:03 pm
Si el objetivo es aprender, tómate tu tiempo

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 24 Ago 2008 02:16 pm
TODO Ok . ¿cómo no se me ocurrió usar? getChildByName

Por araña

35 de clabLevel



 

msie

 

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