ActionScript Avanzada Ayuda!

  • ScRat0i71
  • Novice
  • Novice
  • No Avatar
  • Registrado: Abr 12, 2007
  • Mensajes: 15
  • Loc: Detroit
  • Status: Offline

Nota Septiembre 2nd, 2007, 1:30 pm

Necesitamos a alguien con conocimientos de ActionScript loco para ayudar en este caso.

Tengo un proyecto Im trabajando en eso se debe en 2 días, y esta es la pieza Flash Im emular con mis ajustes: http://www.burstlabs.com/

¿Qué im haciendo es que las burbujas * no se superponen y se les flotar en una formación de círculo. Entonces, ¿qué Im usando, que es la única manera que puedo pensar es manantiales. Mi código está abajo, y cualquier ayuda sería totalmente apreciada y este es un proyecto totalmente dulce para añadir reanuda anyones. Si le sucede que viven en Michigan y su un gurú de ActionScript voy a comprar una bebida, si usted me puede ayudar en esto! :)


Voy a estar en AIM / MSN todo el día: ScRat0i71



Código: [ Select ]
var left:Number = 0;
var right:Number = Stage.width;
var top:Number = 0;
var bottom:Number = Stage.height;
var numBubbles:Number = 5;
var spring:Number = 0.005;
var gravity:Number = 0;
init();

var spring2:Number = 0.1;
var friction:Number = 0.9;
var spring2Length:Number = 25;


function init() {
    var bubbleArray:Array = new Array();
    for (var i:Number = 0; i<numBubbles; i++) {
        var bubble:MovieClip = attachMovie("bubble", "bubble" + i, i);
        bubbleArray[i] = bubble;
        bubbleArray[i]._x = Math.random() * Stage.width;
        bubbleArray[i]._y = Math.random() * Stage.height;
        bubbleArray[i]._xscale = bubbleArray[i]._yscale = 80 + Math.random()*50;
        bubbleArray[i].vx = 0;
        bubbleArray[i].vy = 0;
        bubbleArray[i].v2x = 0;
        bubbleArray[i].v2y = 0;
        bubbleArray[i].d2x = 0;
        bubbleArray[i].d2y = 0;
        
        
        ////////// --- SPRING TO CIRCLE --- //////////
        springTo(circle, bubbleArray[i]);
        springTo(bubbleArray[i], circle);
        clear();
        lineStyle(1, 0, 100);
        moveTo(circle._x, circle._y);
        lineTo(bubbleArray[0]._x, bubbleArray[0]._y);
        ////////// --- SPRING TO CIRCLE --- //////////
        
        /// -- color
        var orangeColor1:Color = new Color(bubbleArray[i].bg);
        var orangeColor2:Color = new Color(bubbleArray[i].bg_left);
        var orangeColor3:Color = new Color(bubbleArray[i].bg_right);
        var whiteColor:Color = new Color(bubbleArray[i].txt_menu);
        orangeColor1.setRGB(0xE9851A);
        orangeColor2.setRGB(0xE9851A);
        orangeColor3.setRGB(0xE9851A);
        whiteColor.setRGB(0xFFFFFF);
        
        /// -- button state
        bubbleArray[i].onRollOver = function() {
            this.swapDepths(10000);
            this._width += 30;
            this._height += 5;
            this.bg.colorTo(0xFF9A2E, .15, "easeOutQuad");
            this.bg_left.colorTo(0xFF9A2E, .15, "easeOutQuad");
            this.bg_right.colorTo(0xFF9A2E, .15, "easeOutQuad");
        }
        bubbleArray[i].onRollOut = function() {
            this._width -= 30;
            this._height -= 5;
            this.bg.colorTo(0xE9851A, .25, "easeOutQuad");
            this.bg_left.colorTo(0xE9851A, .25, "easeOutQuad");
            this.bg_right.colorTo(0xE9851A, .15, "easeOutQuad");
        }
        /*
        /// -- set textField width
        bubbleArray[i].txt_menu.autoSize = "center";
        
        /// -- set text
        bubbleArray[0].txt_menu.text = "Lorem ipsum";
        bubbleArray[1].txt_menu.text = "dolor sit amet";
        bubbleArray[2].txt_menu.text = "consectetuer adipiscing";
        bubbleArray[3].txt_menu.text = "elit";
        bubbleArray[4].txt_menu.text = "Nulla porta tempus sapien";
        
        /// -- set size/position of bg
        bubbleArray[i].bg._width = bubbleArray[i].txt_menu.textWidth + 10;
        bubbleArray[i].bg_left._x = bubbleArray[i].txt_menu._x -10;
        bubbleArray[i].bg_right._x = bubbleArray[i].txt_menu.textWidth / 2 + 12;
        */
    }
}
function onEnterFrame(Void):Void {
    for(var i = 0; i < numBubbles - 1; i++)
    {
        var bubbleA:MovieClip = this["bubble" + i];
        for(var j = i + 1; j < numBubbles; j++)
        {
            var bubbleB:MovieClip = this["bubble" + j];
            var dx:Number = bubbleB._x - bubbleA._x;
            var dy:Number = bubbleB._y - bubbleA._y;
            var dist:Number = Math.sqrt(dx*dx + dy*dy);
            var minDist:Number = bubbleA._width + bubbleB._width;
            if(dist < minDist)
            {
                var angle:Number = Math.atan2(dy, dx);
                var targetX:Number = bubbleA._x + Math.cos(angle) * minDist;
                var targetY:Number = bubbleA._y + Math.sin(angle) * minDist;
                var ax:Number = (targetX - bubbleB._x) * spring;
                var ay:Number = (targetY - bubbleB._y) * spring;
                bubbleA.vx -= ax;
                bubbleA.vy -= ay;
                bubbleB.vx += ax;
                bubbleB.vy += ay;
            }
        }
    }
    for (var i = 0; i < numBubbles; i++) {
        var bubble:MovieClip = this["bubble" + i];
        move(bubble);
    }
}
function move(bubble:MovieClip) {
    bubble.vy += gravity;
    bubble._x += bubble.vx;
    bubble._y += bubble.vy;
    if (bubble._x + bubble._width / 2 > right) {
        bubble._x = right-bubble._width / 2;
        bubble.vx *= -.9;
    } else if (bubble._x - bubble._width / 2 < left) {
        bubble._x = left+bubble._width / 2;
        bubble.vx *= -.9;
    }
    if (bubble._y + bubble._width / 2 > bottom) {
        bubble._y = bottom-bubble._width / 2;
        bubble.vy *= -.9;
    } else if (bubble._y - bubble._width / 2 < top) {
        bubble._y = top+bubble._width / 2;
        bubble.vy *= -.9;
    }
}

function springTo(ballA, ballB)
{
    if(!ballA.dragging)
    {
        var d2x:Number = ballA._x - ballB._x;
        var d2y:Number = ballA._y - ballB._y;
        var angle:Number = Math.atan2(d2y, d2x);
        var targetX:Number = ballB._x + Math.cos(angle) * spring2Length;
        var targetY:Number = ballB._y + Math.sin(angle) * spring2Length;
        ballA.v2x += (targetX - ballA._x) * spring2;
        ballA.v2y += (targetY - ballA._y) * spring2;
        ballA.v2x *= friction;
        ballA.v2y *= friction;
        ballA._x += ballA.v2x;
        ballA._y += ballA.v2y;
    }
};

/*
function doDrag()
{
    this.dragging = true;
    this.startDrag();
}
function doDrop()
{
    this.dragging = false;
    this.stopDrag();
}
*/
  1. var left:Number = 0;
  2. var right:Number = Stage.width;
  3. var top:Number = 0;
  4. var bottom:Number = Stage.height;
  5. var numBubbles:Number = 5;
  6. var spring:Number = 0.005;
  7. var gravity:Number = 0;
  8. init();
  9. var spring2:Number = 0.1;
  10. var friction:Number = 0.9;
  11. var spring2Length:Number = 25;
  12. function init() {
  13.     var bubbleArray:Array = new Array();
  14.     for (var i:Number = 0; i<numBubbles; i++) {
  15.         var bubble:MovieClip = attachMovie("bubble", "bubble" + i, i);
  16.         bubbleArray[i] = bubble;
  17.         bubbleArray[i]._x = Math.random() * Stage.width;
  18.         bubbleArray[i]._y = Math.random() * Stage.height;
  19.         bubbleArray[i]._xscale = bubbleArray[i]._yscale = 80 + Math.random()*50;
  20.         bubbleArray[i].vx = 0;
  21.         bubbleArray[i].vy = 0;
  22.         bubbleArray[i].v2x = 0;
  23.         bubbleArray[i].v2y = 0;
  24.         bubbleArray[i].d2x = 0;
  25.         bubbleArray[i].d2y = 0;
  26.         
  27.         
  28.         ////////// --- SPRING TO CIRCLE --- //////////
  29.         springTo(circle, bubbleArray[i]);
  30.         springTo(bubbleArray[i], circle);
  31.         clear();
  32.         lineStyle(1, 0, 100);
  33.         moveTo(circle._x, circle._y);
  34.         lineTo(bubbleArray[0]._x, bubbleArray[0]._y);
  35.         ////////// --- SPRING TO CIRCLE --- //////////
  36.         
  37.         /// -- color
  38.         var orangeColor1:Color = new Color(bubbleArray[i].bg);
  39.         var orangeColor2:Color = new Color(bubbleArray[i].bg_left);
  40.         var orangeColor3:Color = new Color(bubbleArray[i].bg_right);
  41.         var whiteColor:Color = new Color(bubbleArray[i].txt_menu);
  42.         orangeColor1.setRGB(0xE9851A);
  43.         orangeColor2.setRGB(0xE9851A);
  44.         orangeColor3.setRGB(0xE9851A);
  45.         whiteColor.setRGB(0xFFFFFF);
  46.         
  47.         /// -- button state
  48.         bubbleArray[i].onRollOver = function() {
  49.             this.swapDepths(10000);
  50.             this._width += 30;
  51.             this._height += 5;
  52.             this.bg.colorTo(0xFF9A2E, .15, "easeOutQuad");
  53.             this.bg_left.colorTo(0xFF9A2E, .15, "easeOutQuad");
  54.             this.bg_right.colorTo(0xFF9A2E, .15, "easeOutQuad");
  55.         }
  56.         bubbleArray[i].onRollOut = function() {
  57.             this._width -= 30;
  58.             this._height -= 5;
  59.             this.bg.colorTo(0xE9851A, .25, "easeOutQuad");
  60.             this.bg_left.colorTo(0xE9851A, .25, "easeOutQuad");
  61.             this.bg_right.colorTo(0xE9851A, .15, "easeOutQuad");
  62.         }
  63.         /*
  64.         /// -- set textField width
  65.         bubbleArray[i].txt_menu.autoSize = "center";
  66.         
  67.         /// -- set text
  68.         bubbleArray[0].txt_menu.text = "Lorem ipsum";
  69.         bubbleArray[1].txt_menu.text = "dolor sit amet";
  70.         bubbleArray[2].txt_menu.text = "consectetuer adipiscing";
  71.         bubbleArray[3].txt_menu.text = "elit";
  72.         bubbleArray[4].txt_menu.text = "Nulla porta tempus sapien";
  73.         
  74.         /// -- set size/position of bg
  75.         bubbleArray[i].bg._width = bubbleArray[i].txt_menu.textWidth + 10;
  76.         bubbleArray[i].bg_left._x = bubbleArray[i].txt_menu._x -10;
  77.         bubbleArray[i].bg_right._x = bubbleArray[i].txt_menu.textWidth / 2 + 12;
  78.         */
  79.     }
  80. }
  81. function onEnterFrame(Void):Void {
  82.     for(var i = 0; i < numBubbles - 1; i++)
  83.     {
  84.         var bubbleA:MovieClip = this["bubble" + i];
  85.         for(var j = i + 1; j < numBubbles; j++)
  86.         {
  87.             var bubbleB:MovieClip = this["bubble" + j];
  88.             var dx:Number = bubbleB._x - bubbleA._x;
  89.             var dy:Number = bubbleB._y - bubbleA._y;
  90.             var dist:Number = Math.sqrt(dx*dx + dy*dy);
  91.             var minDist:Number = bubbleA._width + bubbleB._width;
  92.             if(dist < minDist)
  93.             {
  94.                 var angle:Number = Math.atan2(dy, dx);
  95.                 var targetX:Number = bubbleA._x + Math.cos(angle) * minDist;
  96.                 var targetY:Number = bubbleA._y + Math.sin(angle) * minDist;
  97.                 var ax:Number = (targetX - bubbleB._x) * spring;
  98.                 var ay:Number = (targetY - bubbleB._y) * spring;
  99.                 bubbleA.vx -= ax;
  100.                 bubbleA.vy -= ay;
  101.                 bubbleB.vx += ax;
  102.                 bubbleB.vy += ay;
  103.             }
  104.         }
  105.     }
  106.     for (var i = 0; i < numBubbles; i++) {
  107.         var bubble:MovieClip = this["bubble" + i];
  108.         move(bubble);
  109.     }
  110. }
  111. function move(bubble:MovieClip) {
  112.     bubble.vy += gravity;
  113.     bubble._x += bubble.vx;
  114.     bubble._y += bubble.vy;
  115.     if (bubble._x + bubble._width / 2 > right) {
  116.         bubble._x = right-bubble._width / 2;
  117.         bubble.vx *= -.9;
  118.     } else if (bubble._x - bubble._width / 2 < left) {
  119.         bubble._x = left+bubble._width / 2;
  120.         bubble.vx *= -.9;
  121.     }
  122.     if (bubble._y + bubble._width / 2 > bottom) {
  123.         bubble._y = bottom-bubble._width / 2;
  124.         bubble.vy *= -.9;
  125.     } else if (bubble._y - bubble._width / 2 < top) {
  126.         bubble._y = top+bubble._width / 2;
  127.         bubble.vy *= -.9;
  128.     }
  129. }
  130. function springTo(ballA, ballB)
  131. {
  132.     if(!ballA.dragging)
  133.     {
  134.         var d2x:Number = ballA._x - ballB._x;
  135.         var d2y:Number = ballA._y - ballB._y;
  136.         var angle:Number = Math.atan2(d2y, d2x);
  137.         var targetX:Number = ballB._x + Math.cos(angle) * spring2Length;
  138.         var targetY:Number = ballB._y + Math.sin(angle) * spring2Length;
  139.         ballA.v2x += (targetX - ballA._x) * spring2;
  140.         ballA.v2y += (targetY - ballA._y) * spring2;
  141.         ballA.v2x *= friction;
  142.         ballA.v2y *= friction;
  143.         ballA._x += ballA.v2x;
  144.         ballA._y += ballA.v2y;
  145.     }
  146. };
  147. /*
  148. function doDrag()
  149. {
  150.     this.dragging = true;
  151.     this.startDrag();
  152. }
  153. function doDrop()
  154. {
  155.     this.dragging = false;
  156.     this.stopDrag();
  157. }
  158. */
[/ code]
  • Anonymous
  • Bot
  • No Avatar
  • Registrado: 25 Feb 2008
  • Mensajes: ?
  • Loc: Ozzuland
  • Status: Online

Nota Septiembre 2nd, 2007, 1:30 pm

  • graphixboy
  • Control + Z
  • Mastermind
  • Avatar de Usuario
  • Registrado: Jul 11, 2005
  • Mensajes: 1828
  • Loc: In the Great White North
  • Status: Offline

Nota Septiembre 2nd, 2007, 4:37 pm

¿podría ser un poco más específica acerca de cuál es el problema? Usted no va a obtener mucha ayuda de su decir tratando de copiar algo y no nos dice cuál es roto
  • ScRat0i71
  • Novice
  • Novice
  • No Avatar
  • Registrado: Abr 12, 2007
  • Mensajes: 15
  • Loc: Detroit
  • Status: Offline

Nota Septiembre 2nd, 2007, 7:42 pm

Ahh sí. Eso tendría sentido también.

Si usted marca el vínculo http://www.burstlabs.com/ y compararlo con mi proyecto http://romanodx.com/projects/xxxxxx/bubbleTest.html usted notará un poco de diferencia.

Mi problema surge aquí:
1) - Necesito fluido como en un movimiento circular como barrera de este sitio.

2) - Necesidad de forma dinámica entre un rollover popup en lugar de crecer un instante y mirar atrás. (transición sin tropiezos hacia arriba y hacia abajo). En este momento su justa bubbleArray [i]. _width + = 30; bubbleArray [i]. _height + = 5; thats el código por el momento. Im pensando que tiene que ser una función del tamaño, porque se genera cada vez diferentes y no puedo utilizar el lmc_tween a poco escala hacia arriba o hacia abajo, ya que devuelve la dinámica generada al azar tamaño para el conjunto de tamaño 100...

3) - Los objetos que están flotando no pueden solaparse entre sí y deben permanecer en una especie de acuerdo de circular. Im actionscript no es un genio, pero lo único que puedo encontrar es que remotamente cerca de lo que yo necesito es utilizando los manantiales? Im realmente no está seguro de cómo este estado puro efecto.


Lo que he hecho en este proyecto, o piensa que el trabajo es la siguiente:
1) - Use "ActionScript Animación - Hacer las cosas pasar" por Keith Peters capítulo 8 "manantiales" y tratar de hacer un movimiento sin usar la gravedad para que todos la gama de casos controlados rebote entre sí con un 10 pixel shell en un punto intermedio, que obviamente en mi ejemplo es mucho más grande que 10 pixels y no puedo cifra que fuera.

2) - Utilice otro "primavera" tipo de movimiento para formar un patrón circular. El uso de la springTo en función de este script Tenía la esperanza de vincular una instancia a la media "círculo" que está oculto y, a continuación, conectar todos los demás a la que está vinculado al círculo, y la última de ellas vinculadas al círculo, por lo que su una cadena alrededor del círculo. Eso, sin embargo, no está funcionando en este momento. (te darás cuenta de una simple línea tratando de sacar a la posición de una caja cada vez que aparezca un enlace a la media "círculo" Que oculta.)



Espero que esta explicación ayudará a mostrar lo que Im tratando de hacer con esto.
También debe copiar mi actionscript y pegarlo en flash y crear una instancia de un movieclip en el escenario llamado burbuja, y crear otro movieclip en el escenario de un círculo y en la vinculación nombre círculo. Si utiliza MSN o AIM, por favor agregue mi nombre de pantalla y puedo hablar y explicar mejor si se plantea una cuestión de para qué se busca Im a hacer.

Gracias un millón! :)
  • dhonsvick
  • Beginner
  • Beginner
  • No Avatar
  • Registrado: May 27, 2007
  • Mensajes: 49
  • Status: Offline

Nota Septiembre 2nd, 2007, 10:14 pm

Heres a crecer líquido y la función de retracción. Ponga estas funciones en el marco de sus acciones en el marco de raíz.


Código: [ Select ]

function grow(clip, scale){
        var xs:Tween = new Tween(clip, "_xscale", Strong.easeOut, clip._xscale, scale, 1, true);
        var ys:Tween = new Tween(clip, "_yscale", Strong.easeOut, clip._yscale, scale, 1, true);
    }
    function shrink(clip){
        var xs2:Tween = new Tween(clip, "_xscale", Strong.easeOut , clip._xscale, 100, 1, true);
        var ys2:Tween = new Tween(clip, "_yscale", Strong.easeOut, clip._yscale, 100, 1, true);
        
    }
  1. function grow(clip, scale){
  2.         var xs:Tween = new Tween(clip, "_xscale", Strong.easeOut, clip._xscale, scale, 1, true);
  3.         var ys:Tween = new Tween(clip, "_yscale", Strong.easeOut, clip._yscale, scale, 1, true);
  4.     }
  5.     function shrink(clip){
  6.         var xs2:Tween = new Tween(clip, "_xscale", Strong.easeOut , clip._xscale, 100, 1, true);
  7.         var ys2:Tween = new Tween(clip, "_yscale", Strong.easeOut, clip._yscale, 100, 1, true);
  8.         
  9.     }




Ahora usted puede llamar al (_root.grow <nombreDeInstancia>, por ciento); Desde cualquier lugar de la película o submovies.
es decir,
Código: [ Select ]
_root.grow(myInstance, 150);

myInstance crece un 150% y
Código: [ Select ]
_root.shrink(myInstance)
para volver a la normalidad.);
  • ScRat0i71
  • Novice
  • Novice
  • No Avatar
  • Registrado: Abr 12, 2007
  • Mensajes: 15
  • Loc: Detroit
  • Status: Offline

Nota Septiembre 4th, 2007, 9:00 pm

Esa función que me dio es kewl, pero su ayuda no con la dinámica recordar casos escala y tal.
  • graphixboy
  • Control + Z
  • Mastermind
  • Avatar de Usuario
  • Registrado: Jul 11, 2005
  • Mensajes: 1828
  • Loc: In the Great White North
  • Status: Offline

Nota Septiembre 5th, 2007, 5:51 am

sólo mod dhonsvicks secuencia de comandos para hacer un seguimiento del estado de inicio.

Código: [ Select ]
function grow(clip, scale){
    clip.startXscale = clip._xscale;
    clip.startYscale = clip._yscale;
   var xs:Tween = new Tween(clip, "_xscale", Strong.easeOut, clip._xscale, scale, 1, true);

   var ys:Tween = new Tween(clip, "_yscale", Strong.easeOut, clip._yscale, scale, 1, true);

  }

  function shrink(clip){

   var xs2:Tween = new Tween(clip, "_xscale", Strong.easeOut , clip._xscale, clip.startXscale, 1, true);

   var ys2:Tween = new Tween(clip, "_yscale", Strong.easeOut, clip._yscale, clip.startYscale, 1, true);

   

  }
  1. function grow(clip, scale){
  2.     clip.startXscale = clip._xscale;
  3.     clip.startYscale = clip._yscale;
  4.    var xs:Tween = new Tween(clip, "_xscale", Strong.easeOut, clip._xscale, scale, 1, true);
  5.    var ys:Tween = new Tween(clip, "_yscale", Strong.easeOut, clip._yscale, scale, 1, true);
  6.   }
  7.   function shrink(clip){
  8.    var xs2:Tween = new Tween(clip, "_xscale", Strong.easeOut , clip._xscale, clip.startXscale, 1, true);
  9.    var ys2:Tween = new Tween(clip, "_yscale", Strong.easeOut, clip._yscale, clip.startYscale, 1, true);
  10.    
  11.   }


lo que lo haga...

clip.startXscale = clip._xscale; - clip es una referencia a lo que alguna vez movieclip se pasa a la función por lo que este sólo lleva ese clip y hace una variable dentro de Thats igual a la XScale antes de la transformación se produce.

Luego, al comprimir el clip hacia abajo quiere leer en el valor de inicio almacenada en el clip en lugar del valor por defecto 100% que dhonsvick utilizados.
  • ScRat0i71
  • Novice
  • Novice
  • No Avatar
  • Registrado: Abr 12, 2007
  • Mensajes: 15
  • Loc: Detroit
  • Status: Offline

Nota Septiembre 10th, 2007, 8:07 pm

Imponente! Gracias hombre! Cuando tengo la oportunidad voy a someter a que y que es, sin duda, lo que im buscando!

¿Le sucederá a saber nada sobre xml de carga dinámica creada en los casos que flotan alrededor sin tocar uno al otro?
  • graphixboy
  • Control + Z
  • Mastermind
  • Avatar de Usuario
  • Registrado: Jul 11, 2005
  • Mensajes: 1828
  • Loc: In the Great White North
  • Status: Offline

Nota Septiembre 12th, 2007, 8:06 am

casi todo lo que podría posiblemente necesita saber sobre XML para utilizarlo en Flash a través de Kirupa.com

Publicar Información

  • Total de mensajes en este tema: 8 mensajes
  • Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 51 invitados
  • No puede abrir nuevos temas en este Foro
  • No puede responder a temas en este Foro
  • No puede editar sus mensajes en este Foro
  • No puede borrar sus mensajes en este Foro
  • No puede enviar adjuntos en este Foro
 
 

© 2011 Unmelted, LLC. Ozzu® es una marca registrada de Unmelted, LLC