Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   помогите перевести на as3 (http://www.flasher.ru/forum/showthread.php?t=123754)

Lilysik 09.04.2009 18:08

помогите перевести на as3
 
Начала изучение с as3 помогите перевести код пожалуйста если это не сильно заморочно :rolleyes:
Код AS1/AS2:

i = 0;
mousex = getProperty("/m", _x);
mousey = getProperty("/m", _y);
while (Number(i)<=Number(num)) {
        set("/p" add i add ":xm2", (_level0:mousex-getProperty ("/p" add i, _x )+random(2*fr)-fr)/(50-fmouse));
        set("/p" add i add ":ym2", (_level0:mousey-getProperty ("/p" add i, _y )+random(2*fr)-fr)/(50-fmouse));
        a = eval("/p" add i add ":a");
        set("/p" add i add ":xm", eval("/p" add i add ":xm")*(1-a)+eval("/p" add i add ":xm2")*a);
        set("/p" add i add ":ym", eval("/p" add i add ":ym")*(1-a)+eval("/p" add i add ":ym2")*a);
        setProperty("/p" add i, _x, getProperty ("/p" add i, _x )+eval("/p" add i add ":xm"));
        setProperty("/p" add i, _y, getProperty ("/p" add i, _y )+eval("/p" add i add ":ym"));
        setProperty("/p" add i, _xscale, 100);
        setProperty("/p" add i, _yscale, 100);
        rot = getProperty ("/p" add i, _rotation)+(eval("/p" add i add ":xm")+eval("/p" add i add ":ym"));
        if (Number(rot)>360) {
                rot = rot-360;
        }
        if (Number(rot)<0) {
                rot = Number(rot)+360;
        }
        setProperty("/p" add i, _rotation, getProperty ("/p" add i, _rotation)+(eval("/p" add i add ":xm")+eval("/p" add i add ":ym"))/2);
        i = Number(i)+1;
}


mre 09.04.2009 18:27

Перевод без осмысления не поможет.
Словарь.

wvxvw 09.04.2009 18:48

Ну, что-то в этом духе...
Код AS3:

var num:int = numChildren; // откуда берутся клипы, которые нужно трансформировать?
var i:int;
var m:MovieClip = getChildByName("m");
var mousex:Number = m.x;
var mousey:Number = m.y;
var clip:MovieClip;
var xm2:Number;
var ym2:Number;
var fmouse:Number; // что это? Нужно задать начальное значение.
var fr:Number; // что это? Нужно задать начальное значение.
var a:Number;
var rot:Number;
while (i++ <= num)
{
        clip = getChildByName("p" + i);
        clip.xm2 = mousex - clip.x + Math.random(2 * fr) - fr) / (50 - fmouse));
        clip.ym2 = mousex - clip.y + Math.random(2 * fr) - fr) / (50 - fmouse));
        a = clip.a;
        clip.xm = clip.xm * (1 - a) + clip.xm2 * a;
        clip.ym = clip.ym * (1 - a) + clip.ym2 * a;
        clip.x += clip.xm;
        clip.y += clip.ym;
        clip.scaleX = 1;
        clip.scaleY = 1;
        rot = Math.abs(clip.rotation + clip.xm + clip.ym) % 360;
        clip.rotation = rot / 2;
}

Наугад... я не понял, что этот ваш скрипт делал... да и то, что я написал трудно назвать АС3 :) бред какой-то с созданием динамических свойств у клипов для каких-то непонятных мне рассчетов... легче выбросить АС1 вариант и просто написать по-новой...

Lilysik 09.04.2009 19:12

Вложений: 1
спасибо огромное, исходник прикрепляю.
Пыталась сделать класс что то типа
Код AS3:

dynamic public class Roy extends MovieClip {
 
                    //Количество частиц
            var  num = 15;
            //Сила разлёта от мышки
            var fr = 700;
          //Min и Max ускорения
            var  mina = 5;
            var  maxa = 15;
          //Сила притяжения мышки (max=50)
            var fmouse = 30;
            var  i = 1;
                        //var myxa:Myxa;
                        var main;
                        var myxa:Array = new Array(16);
 
 
 
                public function Roy(a){
                main = a;
 
      while (i<=num) {
 
                  myxa[i] = new Myxa;
                  myxa[i].x = Math.random()*(0-550)+550;
                  myxa[i].y = Math.random()*(0-400)+400;
                  myxa[i].rotation = Math.random()*(0-360)+360;
                  main.addChild(myxa[i]);
 
            // set("/p" add i add ":a", (Number(random(maxa-mina))+Number(mina))/100);
              i = i+1;
          }
      myxa.startDrag(true);
                }

а потом по таймеру думаю тот кусочек кода в функцию вставить....
вот как то так:)
спасибо ещё раз,буду дальше разбираться))))

Lilysik 10.04.2009 11:57

Что то не так(((
Код AS3:

package{
 
 
        import flash.display.MovieClip;
        import flash.utils.Timer;     
        import flash.events.TimerEvent;
 
        dynamic public class Roy extends MovieClip {
 
                    //Количество частиц
            var  num = 15;
            //Сила разлёта от мышки
            var fr = 700;
          //Min и Max ускорения
            var  mina = 5;
            var  maxa = 15;
          //Сила притяжения мышки (max=50)
            var fmouse = 30;
            var  i = 0;
                        var main;
                        var myxa:Array = new Array(16);
                        public var        clip;
                        var mainTimer;
 
 
 
                public function Roy(a){
                main = a;
 
      while (i<=num) {
 
                  myxa[i] = new Myxa;
                  myxa[i].x = Math.random()*(0-550)+550;
                  myxa[i].y = Math.random()*(0-400)+400;
                  main.addChild(myxa[i]);
 
              myxa[i].ar= Number(Math.random()*(maxa-mina)+mina)/100;
              i = i+1;
 
          }
 
            mainTimer = new Timer(150);
            mainTimer.addEventListener("timer", go);
            mainTimer.start();
                }
 
        public function go(e:TimerEvent){
            var i = 0;
            var mousex = mouseX;
            var mousey = mouseY;
 
        while (i<=num) {
            clip = myxa[i];
            clip.xm2 = ((mousex - clip.x) + Math.random()*(2*fr)-fr) / (50 - fmouse);
            clip.ym2 = ((mousey - clip.y) + Math.random()*(2*fr)-fr) / (50 - fmouse);
 
  var        ar = clip.ar;
            clip.xm = clip.xm * (1 - ar) + clip.xm2 * ar;
            clip.ym = clip.ym * (1 - ar) + clip.ym2 * ar;
            clip.x += clip.xm;
            clip.y += clip.ym;
 
        trace(clip.xm);//здесь ошибка,но не могу разобраться(((
 
        i = i+1;
 
}
 
}
 
 
 
 
 
 
 
 
 
 
        }
}

Добавлено через 3 часа 45 минут
Осталась одна загвоздка
Код AS1/AS2:

        set("/p" add i add ":xm", eval("/p" add i add ":xm")* (1-a)+eval("/p" add i add ":xm2")*a);
        set("/p" add i add ":ym", eval("/p" add i add ":ym")*(1-a)+eval("/p" add i add ":ym2")*a);

эти строчки никак неосилить
Код AS3:

        clip.xm = clip.xm * (1 - a) + clip.xm2 * a;
        clip.ym = clip.ym * (1 - a) + clip.ym2 * a;

так неработает((


Часовой пояс GMT +4, время: 20:37.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.