Advanced ActionScript Help!

  • ScRat0i71
  • Novice
  • Novice
  • No Avatar
  • Inscription: Avr 12, 2007
  • Messages: 15
  • Loc: Detroit
  • Status: Offline

Message Septembre 2nd, 2007, 1:30 pm

Besoin de quelqu'un avec une connaissance d'ActionScript fou de l'aide sur celui-ci.

J'ai un projet sur le travail de la GI qui est dû dans les 2 jours, et c'est la pièce flash Im émulant avec mes réglages: http://www.burstlabs.com/

Quelle im fait, c'est rendre les bulles * se chevauchent pas et les faire planer dans une formation en cercle. Donc ce qui Im aide, qui est la seule manière que je peux penser à est ressorts. Mon code est en bas, et toute aide serait tout à fait apprécié et c'est un projet totalement doux à ajouter au CV anyones. Si vous vivez dans le Michigan et un gourou de votre actionscript je t'offre un verre si vous pouvez m'aider à ce sujet! :)


Je serai sur AIM / MSN toute la journée: ScRat0i71



Code: [ 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
  • Inscription: 25 Feb 2008
  • Messages: ?
  • Loc: Ozzuland
  • Status: Online

Message Septembre 2nd, 2007, 1:30 pm

  • graphixboy
  • Control + Z
  • Mastermind
  • Avatar de l’utilisateur
  • Inscription: Juil 11, 2005
  • Messages: 1828
  • Loc: In the Great White North
  • Status: Offline

Message Septembre 2nd, 2007, 4:37 pm

pourriez-vous être un peu plus précis sur whats wrong? Vous n'aurez pas beaucoup d'aide en disant que votre essayer de copier quelque chose et ne nous dit pas whats brisé
  • ScRat0i71
  • Novice
  • Novice
  • No Avatar
  • Inscription: Avr 12, 2007
  • Messages: 15
  • Loc: Detroit
  • Status: Offline

Message Septembre 2nd, 2007, 7:42 pm

Ahh oui. Cela aurait un sens aussi bien.

Si vous cochez le lien http://www.burstlabs.com/ et le comparer à mon projet http://romanodx.com/projects/xxxxxx/bubbleTest.html vous remarquerez un petit peu de différence.

Mon problème se pose ici:
1) - J'ai besoin d'un fluide, comme dans un mouvement circulaire comme barrière ce site.

2) - Besoin d'un renversement dynamique entre popup au lieu de pousser un instant et revenir chercher. (transition sans heurt en haut et en bas). À l'heure actuelle, sa juste bubbleArray [i]. _width + = 30; bubbleArray [i]. _height + = 5; thats le code pour le moment. Im pense qu'il doit être une fonction, car la taille est généré chaque fois différent et je ne peux pas utiliser l'échelle lmc_tween juste en haut ou en bas, car il renvoie la taille aléatoire généré dynamiquement à la taille de 100...

3) - qui sont des objets flottants ne peuvent pas se chevaucher les uns les autres et doivent rester dans une sorte de disposition circulaire. Im pas un actionscript géniale, mais la seule chose que je peux trouver cette distance est proche de ce que j'ai besoin, c'est d'utiliser des ressorts? Im vraiment pas sûr de savoir comment aller sur ce pur effet.


Ce que j'ai fait dans ce projet, ou la pensée de ce travail est:
1) - Utilisez "Actionscript Animation - Faire bouger les choses" par Keith Peters, chapitre 8 "sources" et essayer de faire une motion sans gravité en utilisant toutes les instances de contrôle tableau rebondissent les uns avec un shell 10 pixel entre les deux, qui de toute évidence, dans mon exemple est beaucoup plus grand que 10 pixels et je ne peux pas comprendre cela.

2) - Utilisez un autre "printemps" type pour former un mouvement circulaire. Utilisation de la fonction springTo dans ce script, j'ai été l'espoir d'un exemple de lien vers le milieu "cercle" qui est caché, et ensuite établir un lien entre tous les autres à celui qui est lié au cercle, et la dernière liée à la manière de son cercle une chaîne autour du cercle. Cela, cependant, ne fonctionne pas pour le moment. (vous remarquerez une simple ligne à essayer de tirer de la position d'une case à chaque fois faire preuve d'un lien avec le milieu "cercle" thats caché.)



J'espère que cette explication aidera à vous montrer ce que Im essayant de faire avec cela.
Aussi, la copie de mon actionscript et de le coller dans flash et de créer une instance d'un MovieClip sur la scène appelée bulle, et de créer un autre MovieClip sur la scène d'un cercle et dans l'articulation de ce nom cercle. Si vous utilisez AIM ou MSN s'il vous plaît ajouter mon nom d'écran et je peux parler et de mieux expliquer si une question se pose de savoir ce qu'il est Im cherche à faire.

Merci mille fois! :)
  • dhonsvick
  • Beginner
  • Beginner
  • No Avatar
  • Inscription: Mai 27, 2007
  • Messages: 49
  • Status: Offline

Message Septembre 2nd, 2007, 10:14 pm

Heres a Grow de liquide et de la fonction Shrink. Mettez ces fonctions dans le cadre d'action sous votre racine.


Code: [ 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.     }




Maintenant, vous pouvez téléphoner au (_root.grow <instance name>, pour cent); à partir de n'importe où dans votre film ou submovies.
ie
Code: [ Select ]
_root.grow(myInstance, 150);

croît myInstance 150% et
Code: [ Select ]
_root.shrink(myInstance)
pour revenir à la normale.);
  • ScRat0i71
  • Novice
  • Novice
  • No Avatar
  • Inscription: Avr 12, 2007
  • Messages: 15
  • Loc: Detroit
  • Status: Offline

Message Septembre 4th, 2007, 9:00 pm

Cette fonction vous m'avez donné est kewl, mais pas son aide à la dynamique des cas, de rappeler l'ampleur et telles.
  • graphixboy
  • Control + Z
  • Mastermind
  • Avatar de l’utilisateur
  • Inscription: Juil 11, 2005
  • Messages: 1828
  • Loc: In the Great White North
  • Status: Offline

Message Septembre 5th, 2007, 5:51 am

juste mod dhonsvicks script pour faire le suivi de l'état de départ.

Code: [ 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.   }


Qu'est-ce qu'il le fasse...

clip.startXscale = clip._xscale; - clip est une référence à ce MovieClip jamais vous passez à la fonction de sorte que tout cela prend du clip et fait une variable à l'intérieur de celui-ci thats égale à la XScale avant la transformation se produit.

Ensuite, lorsque vous réduisez le clip vers le bas que vous voulez lire dans la valeur de démarrage stockés dans le clip au lieu de la valeur par défaut: 100% que dhonsvick utilisé.
  • ScRat0i71
  • Novice
  • Novice
  • No Avatar
  • Inscription: Avr 12, 2007
  • Messages: 15
  • Loc: Detroit
  • Status: Offline

Message Septembre 10th, 2007, 8:07 pm

Génial! Merci man! Quand j'ai la chance je vais mettre cela en doute, et c'est ce qui im looking for!

Seriez-vous en savoir quelque chose sur le chargement en xml créé dynamiquement des instances qui flottent autour sans toucher l'autre?
  • graphixboy
  • Control + Z
  • Mastermind
  • Avatar de l’utilisateur
  • Inscription: Juil 11, 2005
  • Messages: 1828
  • Loc: In the Great White North
  • Status: Offline

Message Septembre 12th, 2007, 8:06 am

à peu près tout ce dont vous aurez besoin de connaître XML pour l'utiliser dans Flash via Kirupa.com

Afficher de l'information

  • Total des messages de ce sujet: 8 messages
  • Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 92 invités
  • Vous ne pouvez pas poster de nouveaux sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas éditer vos messages
  • Vous ne pouvez pas supprimer vos messages
  • Vous ne pouvez pas joindre des fichiers
 
 

© 2011 Unmelted, LLC. Ozzu® est une marque déposée de Unmelted, LLC