Comunidad de diseño web y desarrollo en internet online

pasar codigo actionscript 2 a 3

Citar            
MensajeEscrito el 11 Abr 2012 11:58 pm
estoy intentando pasar este codigo de as2 a as3 no se si me puedan ayudar el codigo as2 es:

Código ActionScript :

on (press) {
   startDrag("/circle");
}
on (release) {
   stopDrag();
   if (getProperty("/circle", _droptarget) eq "/circle-big") {
      tellTarget ("/status") {
         gotoAndPlay("correct");
      }
   } else {
      setProperty("/circle", _x, "112");
      setProperty("/circle", _y, "316");
   }
}


yo empece ah hacerlo pero no me resulta lo ke llevo es:

Código ActionScript :

circle.addEventListener(MouseEvent.MOUSE_DOWN, fnc1);
circle.addEventListener(MouseEvent.MOUSE_UP, fnc2);

function fnc1(MouseEvent):void
{
   circle.startDrag();
}

function fnc2(MouseEvent):void
{
   circle.stopDrag();
   if(circle.circle_big.hitTestObject(circle);


todo parece indicar que no supe poner el hittest por que cuando doy enter me recorre muchos espacios XD!!!

disculpen soy aun un novatazo para el actionscript 3 si alguien me puede ayudar se lo agradeceria infinitamente

Por sidentelrgamer

61 de clabLevel



 

chrome
Citar            
MensajeEscrito el 12 Abr 2012 03:41 pm
A primera vista hay una cosa que está mal en el código.
Al hacer una función, el tipo de datos obtenido de un evento has de almacenarlo en una variable.

Código ActionScript :

function fnc1(variable:MouseEvent):void {}

Después el condicional que estás creando también está mal:

Código ActionScript :

if(circle.circle_big.hitTestObject(circle);

//Lo primero te falta cerrar el paréntesis del condicional
if( --> circle.circle_big.hitTestObject(circle) <--  -->)<--

//Y después te falta decirle que hacer cuando se cumple la condición, que es lo que has puesto en lugar incorrecto
{
circle.stopDrag()
}

//Y te quedaría así
function fnc2 (variable:MouseEvent):void {
   if (circle.circle_big.hitTestObject(circle))  {
      circle.stopDrag()
   }
}

Y también te recomiendo que el evento MOUSE_UP se lo vincules al stage en vez de a circle, para que no te pueda ocurrir algún error no deseado debido a la velocidad de desplazamiento del mouse, pues podría darse el caso de que estuvieras moviendo el mouse muy rápido y en el momento de soltar el click, circle aún no estuviera bajo el mouse, por lo que no se dispararía el evento MOUSE_UP en circle, sin embargo, stage si estaría recogiendo el evento MOUSE_UP de todas todas.

Espero te sirva,
Un saludo.

Por Abducted

Claber

489 de clabLevel

3 tutoriales

Genero:Masculino  

Mentalidad Renovada

chrome
Citar            
MensajeEscrito el 12 Abr 2012 04:41 pm
muchisimas gracias por responder de hecho el codigo lo usare para varios objetos osea seria

circle, circle1, circle2... etc... y ya fui formando el codigo con lo que me diste no se si vaya bien como digo soy novato en esto y agradesco muchisimo tu ayuda aqui va el codigo:

Código ActionScript :

import flash.events.MouseEvent;


circle.buttonMode = true
circle1.buttonMode = true
circle2.buttonMode = true
circle3.buttonMode = true
circle4.buttonMode = true
circle5.buttonMode = true
circle6.buttonMode = true
circle7.buttonMode = true

//stardrag

circle.addEventListener(MouseEvent.MOUSE_DOWN, fn1);
circle1.addEventListener(MouseEvent.MOUSE_DOWN, fn2);
circle2.addEventListener(MouseEvent.MOUSE_DOWN, fn3);
circle3.addEventListener(MouseEvent.MOUSE_DOWN, fn4);
circle4.addEventListener(MouseEvent.MOUSE_DOWN, fn5);
circle5.addEventListener(MouseEvent.MOUSE_DOWN, fn6);
circle6.addEventListener(MouseEvent.MOUSE_DOWN, fn7);
circle7.addEventListener(MouseEvent.MOUSE_DOWN, fn8);

function fn1(variable:MouseEvent):void
{
   circle.startDrag();
}

function fn2(variable:MouseEvent):void
{
   circle1.startDrag();
}
function fn3(variable:MouseEvent):void
{
   circle2.startDrag();
}
function fn4(variable:MouseEvent):void
{
   circle3.startDrag();
}
function fn5(variable:MouseEvent):void
{
   circle4.startDrag();
}
function fn6(variable:MouseEvent):void
{
   circle5.startDrag();
}
function fn7(variable:MouseEvent):void
{
   circle6.startDrag();
}
function fn8(variable:MouseEvent):void
{
   circle7.startDrag();
}

//stopdrag funciones 1

stage.addEventListener(MouseEvent.MOUSE_UP, fc1);
stage.addEventListener(MouseEvent.MOUSE_UP, fc2);
stage.addEventListener(MouseEvent.MOUSE_UP, fc3);
stage.addEventListener(MouseEvent.MOUSE_UP, fc4);


function fc1(event:MouseEvent):void
{
   if (circle.primerdestino.hitTestObject(circle))  {
            circle.stopDrag()
   }
}
function fc2(event:MouseEvent):void
{
   if (circle1.primerdestino.hitTestObject(circle1))  {
            circle1.stopDrag()
   }
}
function fc3(event:MouseEvent):void
{
   if (circle2.primerdestino.hitTestObject(circle2))  {
            circle2.stopDrag()
   }
}
function fc4(event:MouseEvent):void
{
   if (circle3.primerdestino.hitTestObject(circle3))  {
            circle3.stopDrag()
   }
}

//stopdrag funciones 2

stage.addEventListener(MouseEvent.MOUSE_UP, nc1);
stage.addEventListener(MouseEvent.MOUSE_UP, nc2);
stage.addEventListener(MouseEvent.MOUSE_UP, nc3);
stage.addEventListener(MouseEvent.MOUSE_UP, nc4);

function nc1(event:MouseEvent):void
{
   if (circle4.primerdestino.hitTestObject(circle4))  {
            circle4.stopDrag()
   }
}
function nc2(event:MouseEvent):void
{
   if (circle5.primerdestino.hitTestObject(circle5))  {
            circle5.stopDrag()
   }
}
function nc3(event:MouseEvent):void
{
   if (circle6.primerdestino.hitTestObject(circle6))  {
            circle6.stopDrag()
   }
}
function nc4(event:MouseEvent):void
{
   if (circle6.primerdestino.hitTestObject(circle7))  {
            circle6.stopDrag()
   }
}


asi me esta funcionando perfecto en el arrastrado y soltado segun yo esta bien pero aun no lo se jejeje ya solo faltaria que cuando suelte los circles sobre el circle big me diga si esta correcto alli o no lo esta

Por sidentelrgamer

61 de clabLevel



 

chrome
Citar            
MensajeEscrito el 12 Abr 2012 06:20 pm
Menuda movida de código que te has montado colega, jejejeje... me recuerda a cuando yo empezaba con as2.

Creo que deberías hacer un giro en tu proyecto y desarrollarlo a base de clases.

Te he reestructurado tu código y le he restado muchas líneas, lo he hecho suponiendo que el 'primerdestino' que usas para las colisiones es un objeto independiente a los círculos, porque según tenías el código cada movieClip círculo estaba intentando hacer colisión con un objeto interno suyo y no le encuentro demasiada lógica.

Otra cosa que estaba mal puesta era el momento de detectar colisión y es que lo estabas haciendo en el momento de soltar el ratón y supongo (es posible que me equivoque), que el evento lo querrás lanzar en el momento de la colisión y no cuando liberes el click.

No he querido profundizar en cambiar cosas que a mi me parecen más correctas, para que se quede con las funciones tal y como las planteas.

Espero que con esto puedas tirar para delante y uses mucho la
Referencia al lenguaje AS3

Aquí va tu código simplificado (si es que se le puede llamar así), más corto desde luego.

Código ActionScript :

import flash.events.MouseEvent;
import flash.display.MovieClip;
import flash.events.Event;

var arrastrado:MovieClip;

for (var i:int = 0; i<8; i++) {
   if (i == 0) {this['circle']}
   else {this['circle'+i]}

   this.buttonMode = true;
   this.addEventListener(MouseEvent.MOUSE_DOWN, arrastrar);
}

function arrastrar (e:MouseEvent):void {
   arrastrado = e.target as MovieClip;
   arrastrado.startDrag();
   stage.addEventListener(MouseEvent.MOUSE_UP, soltar);
   stage.addEventListener(Event.ENTER_FRAME, colectar);
}

function soltar (e:MouseEvent):void {
   soltado()
}

function colectar (e:Event):void {
   if (primerDestino.hitTestObject(arrastrado)) {
      soltado();
   }
}

function soltado():void {
   stage.removeEventListener(MouseEvent.MOUSE_UP, soltar);
   stage.removeEventListener(Event.ENTER_FRAME, colectar);
   arrastrado.stopDrag();
}


Espero haberte sido de ayuda,
Un saludo.

Por Abducted

Claber

489 de clabLevel

3 tutoriales

Genero:Masculino  

Mentalidad Renovada

chrome
Citar            
MensajeEscrito el 12 Abr 2012 06:39 pm
vaya impresionante se redujo en gran cantidad el codigo y funciona perfecto me has dado una leccion muy buena =) estudiare mas esto solo si no es muchisima molestia pedirte otro favor grande lo ke realiza el flash es ke arrastro el "circle" hacia "primerdestino" y cuando circle toca primerdestino circle se detiene entonces quiero lograr que cuando suelte circle en el primerdestino salga un texto que diga correcto o uno de aciertos no se si me puedas ayudar con eso la verdad te lo agradeceria bastante y ahora estoy muy agradecido por el gran progreso que me diste =)

Por sidentelrgamer

61 de clabLevel



 

chrome
Citar            
MensajeEscrito el 12 Abr 2012 06:50 pm
Vale, entonces si lo tenías bien orientado y yo estaba equivocado. Simplemente cambia el momento de detectar la colisión a donde lo tenías tú, elimina la función restante y los EnterFrame.

Código ActionScript :

import flash.events.MouseEvent;
import flash.display.MovieClip;

var arrastrado:MovieClip;

for (var i:int = 0; i<8; i++) {
   if (i == 0) {this['circle']}
   else {this['circle'+i]}

   this.buttonMode = true;
   this.addEventListener(MouseEvent.MOUSE_DOWN, arrastrar);
}

function arrastrar (e:MouseEvent):void {
   arrastrado = e.target as MovieClip;
   arrastrado.startDrag();
   stage.addEventListener(MouseEvent.MOUSE_UP, soltar);
}

function soltar (e:MouseEvent):void {
   stage.removeEventListener(MouseEvent.MOUSE_UP, soltar);
   arrastrado.stopDrag();
   if (primerDestino.hitTestObject(arrastrado)) {
      //Aquí Haz lo que quieras
      trace('Estoy tocandoooooooo');
   }
}

Por Abducted

Claber

489 de clabLevel

3 tutoriales

Genero:Masculino  

Mentalidad Renovada

chrome
Citar            
MensajeEscrito el 12 Abr 2012 07:02 pm
jejeje ya hasta me emocione y me puse a buscarle entonces logre hacer que con el primer circulo me contara un acierto =D!!!! jajaja mir este es el codigo que hice

Código ActionScript :

import flash.events.MouseEvent;
import flash.display.MovieClip;
import flash.events.Event;

var correcto:Boolean = false;

var arrastrado:MovieClip;

for (var i:int = 0; i<8; i++) {
   if (i == 0) {this['circle']}
   else {this['circle'+i]}

   this.buttonMode = true;
   this.addEventListener(MouseEvent.MOUSE_DOWN, arrastrar);
}

function arrastrar (e:MouseEvent):void {
   arrastrado = e.target as MovieClip;
   arrastrado.startDrag();
   stage.addEventListener(MouseEvent.MOUSE_UP, soltar);
   stage.addEventListener(Event.ENTER_FRAME, colectar);
}

function soltar (e:MouseEvent):void {
   soltado()
}

function colectar (e:Event):void {
   for(var i = 0; i < circle.length; i++){
         if (primerdestino.hitTestObject(arrastrado)) {
      soltado();
        }
   }
}

function soltado():void {
{
   circle.stopDrag();
}
{
   var aciertos = 0;
      {
         aciertos++;
      }
   correcto = (aciertos == circle.length)?true:false;
      Aciertos_txt.text = aciertos.toString();
}
}


no se si me lie otra vez las cosas poco a poco va tomando forma :)

Por sidentelrgamer

61 de clabLevel



 

chrome
Citar            
MensajeEscrito el 12 Abr 2012 07:03 pm
=O!!! me gusta lo que me enseñaste entonces intentare hacer algo con el codigo ke te acabo de poner y el que me enviaste ahorita te digo que tal =)

Por sidentelrgamer

61 de clabLevel



 

chrome
Citar            
MensajeEscrito el 12 Abr 2012 07:04 pm
mira quedo asi:

Código ActionScript :

import flash.events.MouseEvent;
import flash.display.MovieClip;

var arrastrado:MovieClip;

for (var i:int = 0; i<8; i++) {
   if (i == 0) {this['circle']}
   else {this['circle'+i]}

   this.buttonMode = true;
   this.addEventListener(MouseEvent.MOUSE_DOWN, arrastrar);
}

function arrastrar (e:MouseEvent):void {
   arrastrado = e.target as MovieClip;
   arrastrado.startDrag();
   stage.addEventListener(MouseEvent.MOUSE_UP, soltar);
}

function soltar (e:MouseEvent):void {
   stage.removeEventListener(MouseEvent.MOUSE_UP, soltar);
   arrastrado.stopDrag();
   if (primerdestino.hitTestObject(arrastrado)) {
      //Aquí Haz lo que quieras
      var aciertos = 0;
      {
         aciertos++;
      }
     Aciertos_txt.text = aciertos.toString();
   }
}


solo me cuenta un circulo no se como hacer par aque me cuente los demas =) gracias por la paciencia

Por sidentelrgamer

61 de clabLevel



 

chrome
Citar            
MensajeEscrito el 12 Abr 2012 07:07 pm
mira esto es lo que quiero lograr para que te des una idea =)

Por sidentelrgamer

61 de clabLevel



 

chrome
Citar            
MensajeEscrito el 12 Abr 2012 08:31 pm
Pues si tienes un buen follón con las llaves, te dejo el código con el contador hecho, espero que a partir de aquí ya lo lleves tú sólo, por que sin investigar no se aprende.

He añadido esta línea en la función soltar, para que una vez una de las bolas este colisionando, ya no se pueda agarrar, si lo que prefieres es que se pueda seguir arrastrando, elimina esta línea, pero tengrás que poner más código para que al sacar una bola de uno de los cuadrados reste 1 a la cuenta y así el total no te falle.

Código ActionScript :

arrastrado.removeEventListener(MouseEvent.MOUSE_DOWN, arrastrar)


Otra cosa, pido disculpas por desinformar más de lo que informo, el último código que te he pasado contiene errores, pues si te fijas puedes arrastrar cualquier movieclip del escenario incluido el colisionador, te lo paso corregido.

Código ActionScript :

import flash.events.MouseEvent;
import flash.display.MovieClip;

var arrastrado:MovieClip;
var total:int = 0;

for (var i:int = 0; i<8; i++) {
   var circle:String = 'circulo'+i;
   if (i == 0) {circle = 'circulo'};

   var este:MovieClip;
   este = getChildByName(circle) as MovieClip;
   
   este.buttonMode = true;
   este.addEventListener(MouseEvent.MOUSE_DOWN, arrastrar);
}

function arrastrar (e:MouseEvent):void {
   arrastrado = e.target as MovieClip;
   arrastrado.startDrag();
   stage.addEventListener(MouseEvent.MOUSE_UP, soltar);
}

function soltar (e:MouseEvent):void {
   stage.removeEventListener(MouseEvent.MOUSE_UP, soltar);
   arrastrado.stopDrag();
   arrastrado.removeEventListener(MouseEvent.MOUSE_DOWN, arrastrar);
   if (primerDestino.hitTestObject(arrastrado)) {
      total++;
      Aciertos_txt.text = 'Total de colisiones = '+total;
   }
}


Un saludo.

Por Abducted

Claber

489 de clabLevel

3 tutoriales

Genero:Masculino  

Mentalidad Renovada

chrome
Citar            
MensajeEscrito el 12 Abr 2012 09:09 pm
ay quedo =) muchas gracias con esto tengo todo solucionado :D gracias!! mira tenias un errorsillo pero por curioso lo logre a encontrar me ayudaste bastante y me diste una leccion de hoy en adelante intentare investigar mas y poner mas de mi parte infinitas gracias bueno...

el errorsillo ke encontre era en esta parte:

Código ActionScript :

for (var i:int = 0; i<8; i++) {
   var circle:String = 'circle'+i;
   if (i == 0) {circle = 'circle'};


en string = circle
y
circle = circle

decia string = circulo
circle = circulo

el codigo quedo asi:

Código ActionScript :

import flash.events.MouseEvent;
import flash.display.MovieClip;

var arrastrado:MovieClip;
var total:int = 0;

for (var i:int = 0; i<8; i++) {
   var circle:String = 'circle'+i;
   if (i == 0) {circle = 'circle'};

   var este:MovieClip;
   este = getChildByName(circle) as MovieClip;
   
   este.buttonMode = true;
   este.addEventListener(MouseEvent.MOUSE_DOWN, arrastrar);
}

function arrastrar (e:MouseEvent):void {
   arrastrado = e.target as MovieClip;
   arrastrado.startDrag();
   stage.addEventListener(MouseEvent.MOUSE_UP, soltar);
}

function soltar (e:MouseEvent):void {
   stage.removeEventListener(MouseEvent.MOUSE_UP, soltar);
   arrastrado.stopDrag();
   arrastrado.removeEventListener(MouseEvent.MOUSE_DOWN, arrastrar);
   if (primerdestino.hitTestObject(arrastrado)) {
      total++;
      Aciertos_txt.text = 'Total de colisiones = '+total;
   }
}


gracias infinitas!!

Por sidentelrgamer

61 de clabLevel



 

chrome
Citar            
MensajeEscrito el 13 Abr 2012 07:28 am
Bueno, los de los circles por círculos no es un error es simplemente que me hice el documento y en vez de instancias circle hice circulos, pero vamos que podría ser estrellas, personajes o como se llamen los MovieClips que quieras mover.

Si embargo si hay un error en el momento del hitTest, he colocado esta línea fuera del condicional y va dentro.

Código ActionScript :

arrastrado.removeEventListener(MouseEvent.MOUSE_DOWN, arrastrar);


Un saludo

Por Abducted

Claber

489 de clabLevel

3 tutoriales

Genero:Masculino  

Mentalidad Renovada

chrome
Citar            
MensajeEscrito el 13 Abr 2012 04:04 pm
aaa ciertisimo tambien eso cambie jejeje si tambien no me acordaba tienes racon con eso de los circles =) ya ando haciendo los ejercicios jejeje gracias =D

Por sidentelrgamer

61 de clabLevel



 

msie8
Citar            
MensajeEscrito el 16 Abr 2012 04:12 pm
pues que crees!! XD ya te vengo a molestar otra ves :S logre hacer el ejercicio entero =D!! aki si lo quieres ver:

ejercicio

pero ay un problema los aciertos no me los cuenta me aparece el texto pero no los numeros je je el codigo kedo asi:

Código ActionScript :

import flash.events.MouseEvent;
import flash.display.MovieClip;

var arrastrado:MovieClip;
var total:int = 0;

for (var i:int = 0; i<15; i++) {
   var arrastre:String = 'arrastre'+i;
   if (i == 0) {arrastre = 'arrastre'}
   var animal:String = 'animal'+i;
   if (i == 0) {animal = 'animal'};
   var fruta:String = 'fruta'+i;
   if (i == 0) {fruta = 'fruta'};

   var aquel:MovieClip;
   aquel = getChildByName(animal) as MovieClip;
   var bien:MovieClip;
   bien = getChildByName(fruta) as MovieClip;
   var este:MovieClip;
   este = getChildByName(arrastre) as MovieClip;
   
   este.buttonMode = true;
   aquel.buttonMode = true;
   bien.buttonMode = true
   bien.addEventListener(MouseEvent.MOUSE_DOWN, arrastrar3);
   este.addEventListener(MouseEvent.MOUSE_DOWN, arrastrar);
   aquel.addEventListener(MouseEvent.MOUSE_DOWN, arrastrar2);
}

function arrastrar (e:MouseEvent):void {
   arrastrado = e.target as MovieClip;
   arrastrado.startDrag();
   stage.addEventListener(MouseEvent.MOUSE_UP, soltar);
}

function arrastrar2 (e:MouseEvent):void {
   arrastrado = e.target as MovieClip;
   arrastrado.startDrag();
   stage.addEventListener(MouseEvent.MOUSE_UP, soltar2);
}

function arrastrar3 (e:MouseEvent):void {
   arrastrado = e.target as MovieClip;
   arrastrado.startDrag();
   stage.addEventListener(MouseEvent.MOUSE_UP, soltar3);
}

function soltar (e:MouseEvent):void {
   stage.removeEventListener(MouseEvent.MOUSE_UP, soltar);
   arrastrado.stopDrag();
   if (destino1.hitTestObject(arrastrado)) {
      arrastrado.removeEventListener(MouseEvent.MOUSE_DOWN, arrastrar);   
     total++;
      aciertos.text = 'aciertos = '+total;
   }
}

function soltar2 (e:MouseEvent):void {
   stage.removeEventListener(MouseEvent.MOUSE_UP, soltar2);
   arrastrado.stopDrag();
   if (destino2.hitTestObject(arrastrado)) {
      arrastrado.removeEventListener(MouseEvent.MOUSE_DOWN, arrastrar2);   
     total++;
      aciertos.text = 'aciertos = '+total;
   }
}

function soltar3 (e:MouseEvent):void {
   stage.removeEventListener(MouseEvent.MOUSE_UP, soltar3);
   arrastrado.stopDrag();
   if (destino3.hitTestObject(arrastrado)) {
      arrastrado.removeEventListener(MouseEvent.MOUSE_DOWN, arrastrar3);
     total++;
      aciertos.text = 'aciertos = '+total;
   }
}


sigo haciendolos extensos =/ pero es ke solo asi me funciono jejeje intente hacer una function con los aciertos asi:

Código ActionScript :

function soltar3 (e:MouseEvent):void {
   stage.removeEventListener(MouseEvent.MOUSE_UP, soltar3);
   arrastrado.stopDrag();
   if (destino3.hitTestObject(arrastrado)) {
      arrastrado.removeEventListener(MouseEvent.MOUSE_DOWN, arrastrar3);
     trt
     addEventListener(Event.ENTER_FRAME, trt);
   }
}

function trt
{
     total++;
      aciertos.text = 'aciertos = '+total;
}


pero al parecer me kedo mal =/
no se si me puedas ayudar aun asi seguire intentando

saludos =)

Por sidentelrgamer

61 de clabLevel



 

chrome
Citar            
MensajeEscrito el 16 Abr 2012 04:30 pm
pues que crees!! XD ya te vengo a molestar otra ves :S logre hacer el ejercicio entero =D!! aki si lo quieres ver:

ejercicio

pero ay un problema los aciertos no me los cuenta me aparece el texto pero no los numeros je je el codigo kedo asi:

Código ActionScript :

import flash.events.MouseEvent;
import flash.display.MovieClip;

var arrastrado:MovieClip;
var total:int = 0;

for (var i:int = 0; i<15; i++) {
   var arrastre:String = 'arrastre'+i;
   if (i == 0) {arrastre = 'arrastre'}
   var animal:String = 'animal'+i;
   if (i == 0) {animal = 'animal'};
   var fruta:String = 'fruta'+i;
   if (i == 0) {fruta = 'fruta'};

   var aquel:MovieClip;
   aquel = getChildByName(animal) as MovieClip;
   var bien:MovieClip;
   bien = getChildByName(fruta) as MovieClip;
   var este:MovieClip;
   este = getChildByName(arrastre) as MovieClip;
   
   este.buttonMode = true;
   aquel.buttonMode = true;
   bien.buttonMode = true
   bien.addEventListener(MouseEvent.MOUSE_DOWN, arrastrar3);
   este.addEventListener(MouseEvent.MOUSE_DOWN, arrastrar);
   aquel.addEventListener(MouseEvent.MOUSE_DOWN, arrastrar2);
}

function arrastrar (e:MouseEvent):void {
   arrastrado = e.target as MovieClip;
   arrastrado.startDrag();
   stage.addEventListener(MouseEvent.MOUSE_UP, soltar);
}

function arrastrar2 (e:MouseEvent):void {
   arrastrado = e.target as MovieClip;
   arrastrado.startDrag();
   stage.addEventListener(MouseEvent.MOUSE_UP, soltar2);
}

function arrastrar3 (e:MouseEvent):void {
   arrastrado = e.target as MovieClip;
   arrastrado.startDrag();
   stage.addEventListener(MouseEvent.MOUSE_UP, soltar3);
}

function soltar (e:MouseEvent):void {
   stage.removeEventListener(MouseEvent.MOUSE_UP, soltar);
   arrastrado.stopDrag();
   if (destino1.hitTestObject(arrastrado)) {
      arrastrado.removeEventListener(MouseEvent.MOUSE_DOWN, arrastrar);   
     total++;
      aciertos.text = 'aciertos = '+total;
   }
}

function soltar2 (e:MouseEvent):void {
   stage.removeEventListener(MouseEvent.MOUSE_UP, soltar2);
   arrastrado.stopDrag();
   if (destino2.hitTestObject(arrastrado)) {
      arrastrado.removeEventListener(MouseEvent.MOUSE_DOWN, arrastrar2);   
     total++;
      aciertos.text = 'aciertos = '+total;
   }
}

function soltar3 (e:MouseEvent):void {
   stage.removeEventListener(MouseEvent.MOUSE_UP, soltar3);
   arrastrado.stopDrag();
   if (destino3.hitTestObject(arrastrado)) {
      arrastrado.removeEventListener(MouseEvent.MOUSE_DOWN, arrastrar3);
     total++;
      aciertos.text = 'aciertos = '+total;
   }
}


sigo haciendolos extensos =/ pero es ke solo asi me funciono jejeje intente hacer una function con los aciertos asi:

Código ActionScript :

function soltar3 (e:MouseEvent):void {
   stage.removeEventListener(MouseEvent.MOUSE_UP, soltar3);
   arrastrado.stopDrag();
   if (destino3.hitTestObject(arrastrado)) {
      arrastrado.removeEventListener(MouseEvent.MOUSE_DOWN, arrastrar3);
     trt
     addEventListener(Event.ENTER_FRAME, trt);
   }
}

function trt
{
     total++;
      aciertos.text = 'aciertos = '+total;
}


pero al parecer me kedo mal =/
no se si me puedas ayudar aun asi seguire intentando

saludos =)

Por sidentelrgamer

61 de clabLevel



 

chrome
Citar            
MensajeEscrito el 16 Abr 2012 06:09 pm
Sigo insistiendo en que deberías hacerlo con clases, pero bueno.

Todas las acciones arrastrar y solar las puedes dejar en las originales añadiendo un poquito de lógica al código.

Está Pseudo-función (por llamarlo de alguna manera) que tienes construida, ó su llamada, no me puedo creer que no te esté dando error en el compilador.

Código ActionScript :

function trt
{
     total++;
      aciertos.text = 'aciertos = '+total;
}

Te falta ponerle el paréntesis donde se nombran las variables que recibe la función.

Código ActionScript :

function trt -->()<--  {

Y a la llamada también te falta ponerle los paréntesis

Código ActionScript :

trt -->()<--


A ver, está vez te he comentado el código para que te enteres mejor
Y no es por ser malo ni un ogro, pero no te voy a ayudar más a desarrollar tu código, te ayudare con cosas que necesites concretas, pues si te hago yo el código, no vas a aprender en la vida.

Código ActionScript :

import flash.events.MouseEvent;
import flash.display.MovieClip;

var arrastrado:MovieClip;

//Definimos una nueva variable para almacenar el objetivo del objeto arrastrado
var objetivo:MovieClip;

var total:int = 0;

for (var i:int = 0; i<4; i++) {

   var arrastre:String = 'arrastre'+i;
   var animal:String = 'animal'+i;
   var fruta:String = 'fruta'+i;
   
   //Lo primero a los movieClips con el nombre arrastre, animal y fruta
   //Llámalos arrastre0, animal0, y fruta0
   //Y con esto nos ahorramos los 3 condicionales siguientes
   /*
   if (i == 0) {arrastre = 'arrastre'};
   if (i == 0) {animal = 'animal'};
   if (i == 0) {fruta = 'fruta'};
   */
   
   var este:MovieClip = getChildByName(arrastre) as MovieClip;
   var aquel:MovieClip = getChildByName(animal) as MovieClip;
   var bien:MovieClip = getChildByName(fruta) as MovieClip;
   
   este.buttonMode = true;
   aquel.buttonMode = true;
   bien.buttonMode = true;
   
   este.addEventListener(MouseEvent.MOUSE_DOWN, arrastrar);
   aquel.addEventListener(MouseEvent.MOUSE_DOWN, arrastrar);
   bien.addEventListener(MouseEvent.MOUSE_DOWN, arrastrar);
}

function arrastrar (e:MouseEvent):void {
   arrastrado = e.target as MovieClip;
   arrastrado.startDrag();
   stage.addEventListener(MouseEvent.MOUSE_UP, soltar);
}

function soltar (e:MouseEvent):void {
   stage.removeEventListener(MouseEvent.MOUSE_UP, soltar);
   arrastrado.stopDrag();
   
   //Si estuvieramos haciendo clases todo este proceso sería infinitamente más sencillo
   //Pero bueno, hagámoslo BRUTEMODE.
   //Extraemos los 2 primeros caracteres del nombre del objeto arrastrado
   var tipo:String = arrastrado.name.substring(0, 2);
   
   //Ahora mediante un condicional compramos esos 2 caracteres con lo que sabemos para establecer el objetivo
   if (tipo == 'ar') {objetivo = getChildByName('destino1') as MovieClip;}
   else if (tipo == 'an') {objetivo = getChildByName('destino2') as MovieClip}
   else if (tipo == 'fr') {objetivo = getChildByName('destino3') as MovieClip}
   
   //Yo personalmente, para la facilididad de reconocimiento de posibles errores
   //crearía una sentencia trace que salte si el tipo del objeto no es reconocido
   else {trace('El tipo del objeto arrastrado es erróneo')};
   
   if (objetivo.hitTestObject(arrastrado)) {
      arrastrado.removeEventListener(MouseEvent.MOUSE_DOWN, arrastrar);
      
      //Eliminamos el modo boton del objeto
      arrastrado.buttonMode = false;
      
      total++;
      aciertos.text = 'aciertos = '+total;
   }
}


Un saludo.

Por Abducted

Claber

489 de clabLevel

3 tutoriales

Genero:Masculino  

Mentalidad Renovada

chrome
Citar            
MensajeEscrito el 16 Abr 2012 07:09 pm
El código se puede limpiar mucho más, y acortarlo usando arrays, pero eso lo dejo a tu imaginación.

Y aquí te he cambiado el número de veces que entra el bucle, reestablécelo

Código ActionScript :

for (var i:int = 0; i<4; i++) {


Un saludo de nuevo.

Por Abducted

Claber

489 de clabLevel

3 tutoriales

Genero:Masculino  

Mentalidad Renovada

chrome
Citar            
MensajeEscrito el 16 Abr 2012 07:17 pm
muchas gracias por la ayuda =) ya kedo completo alfin!!! XD!! y tienes razon sigo extendiendome y tengo ke aprender como tu lo dices poco a poco enserio ke si eh aprendido aunke tu hagas todo si eh ido razonando y haciendo otros ejercicios escribiendolo completo sin copiar ni pegar muchas gracias poco a poco todo le voy entendiendo mas =) y tienes razon con arrays kedaria mas corto lo intentare luego y ya te cuento =)

Por sidentelrgamer

61 de clabLevel



 

chrome

 

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