Comunidad de diseño web y desarrollo en internet online

duda acerca onEnterFrame y funciones

Citar            
MensajeEscrito el 26 Feb 2009 08:12 pm
Os cuento, lo que por ahora he hecho:
he cogido una imagen y la he dividido en cuatro partes, y cada parte va hacia una esquina poco a poco( sin llegar hacia la esquina) hasta que se para. Bueno, pues como no sé mucho actionscript, el movimiento de los 4 trozos lo he hecho con onEnterFrame cosa que yo creo me limita mucho puesto que luego a parte de que se mueva hacia las esquinas haré más con estos mc ( las 4 partes están en un arrays de mc). Así que me gustaría saber si hay otra manera para hcerlo en vez del onEnterFrame. Además yo quiero que espere un segundo antes de que se separen las partes, y el onEnterFrame comienza inmediatamente, alguna forma para que no comience inmediatamente?
La idea es que cuando se paren las partes se pueda pinchar sobre ellas y cada una abra un mc distinto, como se podría hacer eso?
espero que alguien me haya entendido
Saludos

Código :

import flash.display.*;
import flash.geom.*;
import flash.filters.*;

var z:Number = 0;
var numCuadros:Number = 2;
var bmpImage:BitmapData = BitmapData.loadBitmap("Pattern")
var clips_arr:Array = new Array();    
var imgW_nmb:Number = bmpImage.width;   
var imgH_nmb:Number = bmpImage.height; 
var level_nmb:Number = this.getNextHighestDepth(); 


for(var j:Number = 0; j < 2; j++ ){  
   clips_arr[j] = new Array();     
   for(var i:Number = 0; i < 2; i++ ){      
      var nueClip:MovieClip = this.createEmptyMovieClip("BMPclip_" + level_nmb, level_nmb);   
      clips_arr[j][i] = nueClip;         
      var aux:BitmapData = new BitmapData(imgW_nmb/numCuadros, imgH_nmb/numCuadros, false);         
      aux.copyPixels(bmpImage, new Rectangle(i * imgW_nmb/numCuadros , j * imgH_nmb/numCuadros, (i+1) * imgW_nmb/numCuadros, (j+1) * imgH_nmb/numCuadros), new Point(0, 0));
      nueClip._x = i * imgW_nmb/numCuadros;         
      nueClip._y = j * imgH_nmb/numCuadros;         
      nueClip.attachBitmap(aux, 0);      
      level_nmb++;     
   }    
}    

this.onEnterFrame = function(){
      for(j=0;j<2;j++){
         for(i=0;i<2;i++){
            if(i==0 && j==0){
               clips_arr[j][i]._x=clips_arr[j][i]._x-0.8;
               clips_arr[j][i]._y=clips_arr[j][i]._y-0.8;
            }
            if(i==1&& j==0){
               clips_arr[j][i]._x=clips_arr[j][i]._x+0.8;
               clips_arr[j][i]._y=clips_arr[j][i]._y-0.8;
            }
            if(i==0 && j==1){
               clips_arr[j][i]._x=clips_arr[j][i]._x-0.8;
               clips_arr[j][i]._y=clips_arr[j][i]._y+0.8;
            }
            if(i==1 && j==1){
               clips_arr[j][i]._x=clips_arr[j][i]._x+0.8;
               clips_arr[j][i]._y=clips_arr[j][i]._y+0.8;
            }
         }
      }
   if(clips_arr[0][0]._x<-5)
      delete this.onEnterFrame;
}

Por jorio01

16 de clabLevel



 

msie7
Citar            
MensajeEscrito el 27 Feb 2009 03:01 am
Hola, pues podrias usar las Tweens, aunque serian mas recomendable usar otras clases como tweener o tweenlite, pero bueno, mejor lo vamos a modificar primero tu codigo, luego me dices si mejor usamos tweens.

Código ActionScript :

import flash.display.*;
import flash.geom.*;
import flash.filters.*;

var z:Number = 0;
var numCuadros:Number = 2;
var bmpImage:BitmapData = BitmapData.loadBitmap("Pattern")
var clips_arr:Array = new Array();    
var imgW_nmb:Number = bmpImage.width;   
var imgH_nmb:Number = bmpImage.height; 
var level_nmb:Number = this.getNextHighestDepth(); 


for(var j:Number = 0; j < 2; j++ ){  
   clips_arr[j] = new Array();     
   for(var i:Number = 0; i < 2; i++ ){      
      var nueClip:MovieClip = this.createEmptyMovieClip("BMPclip_" + level_nmb, level_nmb);   
      clips_arr[j][i] = nueClip;         
      var aux:BitmapData = new BitmapData(imgW_nmb/numCuadros, imgH_nmb/numCuadros, false);         
      aux.copyPixels(bmpImage, new Rectangle(i * imgW_nmb/numCuadros , j * imgH_nmb/numCuadros, (i+1) * imgW_nmb/numCuadros, (j+1) * imgH_nmb/numCuadros), new Point(0, 0));
      nueClip._x = i * imgW_nmb/numCuadros;         
      nueClip._y = j * imgH_nmb/numCuadros;         
      nueClip.attachBitmap(aux, 0);      
      level_nmb++;     
   }    
}    

var inter:Number = setInterval(this,"inicia",2 * 1000);//2 Segundos
function inicia( Void ):Void
{
   clearInterval(inter);
   this.onEnterFrame = function( Void ):Void
   {
      for(j=0;j<2;j++)
      {
         for(i=0;i<2;i++)
         {
            clips_arr[j][i]._x += 0.8 * (i == 0)? -1 : 1;
            clips_arr[j][i]._y += 0.8 * (j == 0)? -1 : 1;
         }
      }
      if(clips_arr[0][0]._x < -5) delete this.onEnterFrame;
   };
}

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 27 Feb 2009 12:13 pm
ok, me parece correcto longeVie, muchas gracias. pero a lo que yo quiero llegar es que imaginate que ahora quiero crear otra función con otros movimientos y que esta solo se ejecute cuando terminaría la función inicia. como lo haría?

Por jorio01

16 de clabLevel



 

msie7
Citar            
MensajeEscrito el 27 Feb 2009 12:13 pm
me refiero a cuando terminaran el onEnterFrame

Por jorio01

16 de clabLevel



 

msie7
Citar            
MensajeEscrito el 27 Feb 2009 12:33 pm
pensandolo mejor, lo que quiero es que cuando terminen los movimientos, lo que quiero es convertir en botones los mcs. Básicamente no sé como hacerlo porque lo que pasa es que se me crean desde el principio el boton. no cuando termina el movimiento

Por jorio01

16 de clabLevel



 

msie7
Citar            
MensajeEscrito el 27 Feb 2009 12:37 pm
he hecho esto para solo el mc de la esquina para que se convierta en botón cuando termine el movimiento pero no me funciona porque supongo que actionscript no lo permite, es que yo soy más de c, y me cuesta entender la lógica de actionscript. te dejo el código

Código :

import flash.display.*; 
import flash.geom.*; 
import flash.filters.*; 
var z:Number = 0; 
var numCuadros:Number = 2;
var bmpImage:BitmapData = BitmapData.loadBitmap("Pattern")
var clips_arr:Array = new Array();  
var imgW_nmb:Number = bmpImage.width;  
var imgH_nmb:Number = bmpImage.height;  
var level_nmb:Number = this.getNextHighestDepth();
this.finalizar = false;

for(var j:Number = 0; j < 2; j++ ){
   clips_arr[j] = new Array();    
   for(var i:Number = 0; i < 2; i++ ){
      var nueClip:MovieClip = this.createEmptyMovieClip("BMPclip_" + level_nmb, level_nmb);
      clips_arr[j][i] = nueClip;          
      var aux:BitmapData = new BitmapData(imgW_nmb/numCuadros, imgH_nmb/numCuadros, false);
      aux.copyPixels(bmpImage, new Rectangle(i * imgW_nmb/numCuadros , j * imgH_nmb/numCuadros, (i+1) * imgW_nmb/numCuadros, (j+1) * imgH_nmb/numCuadros), new Point(0, 0));   
      nueClip._x = i * imgW_nmb/numCuadros;         
      nueClip._y = j * imgH_nmb/numCuadros;          
      nueClip.attachBitmap(aux, 0);             
      level_nmb++;        
      }    
   }    

var inter:Number = setInterval(this,"inicia",2 * 1000);//2 Segundos 

function inicia( Void ):Void {
   clearInterval(inter);    
   this.onEnterFrame = function( Void ):Void    { 
      for(j=0;j<2;j++)       {        
         for(i=0;i<2;i++)          { 
            clips_arr[j][i]._x += 0.8 * (i == 0)? -1 : 1;        
            clips_arr[j][i]._y += 0.8 * (j == 0)? -1 : 1;      
         }       
      }       
      if(clips_arr[0][0]._x < -5) {
         this.finalizar=true;
         trace(this.finalizar);
         delete this.onEnterFrame;    
      }
   };
}  
if(this.finalizar){
   this.clips_arr[0][0].onPress = function (){
      trace("jose");
   }
}

Por jorio01

16 de clabLevel



 

msie7
Citar            
MensajeEscrito el 02 Mar 2009 10:22 pm
Prueba con esto:

Código ActionScript :

import flash.display.*; 
import flash.geom.*; 
import flash.filters.*; 
var z:Number = 0; 
var numCuadros:Number = 2;
var bmpImage:BitmapData = BitmapData.loadBitmap("Pattern")
var clips_arr:Array = new Array();  
var imgW_nmb:Number = bmpImage.width;  
var imgH_nmb:Number = bmpImage.height;  
var level_nmb:Number = this.getNextHighestDepth();
this.finalizar = false;

for(var j:Number = 0; j < 2; j++ ){
   clips_arr[j] = new Array();    
   for(var i:Number = 0; i < 2; i++ ){
      var nueClip:MovieClip = this.createEmptyMovieClip("BMPclip_" + level_nmb, level_nmb);
      clips_arr[j][i] = nueClip;          
      var aux:BitmapData = new BitmapData(imgW_nmb/numCuadros, imgH_nmb/numCuadros, false);
      aux.copyPixels(bmpImage, new Rectangle(i * imgW_nmb/numCuadros , j * imgH_nmb/numCuadros, (i+1) * imgW_nmb/numCuadros, (j+1) * imgH_nmb/numCuadros), new Point(0, 0));   
      nueClip._x = i * imgW_nmb/numCuadros;         
      nueClip._y = j * imgH_nmb/numCuadros;          
      nueClip.attachBitmap(aux, 0);             
      level_nmb++;        
      }    
   }    

var inter:Number = setInterval(this,"inicia",2 * 1000);//2 Segundos 

function inicia( Void ):Void {
   clearInterval(inter);    
   this.onEnterFrame = function( Void ):Void    { 
      for(j=0;j<2;j++)       {        
         for(i=0;i<2;i++)          { 
            clips_arr[j][i]._x += 0.8 * (i == 0)? -1 : 1;        
            clips_arr[j][i]._y += 0.8 * (j == 0)? -1 : 1;      
         }       
      }       
      if(clips_arr[0][0]._x < -5) {
         this.finalizar=true;
         delete this.onEnterFrame;
         for(j=0;j<2;j++)       {        
           for(i=0;i<2;i++)          { 
            clips_arr[j][i].onReleas = function (){
               trace(this._name);
            };
           }       
         } 
      }
   };
}

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox

 

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