Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Динамичный контент (http://www.flasher.ru/forum/showthread.php?t=152388)

Alexvblbl 16.03.2011 23:42

Динамичный контент
 
Используя Action Script 2.0
Здравствуйте столкнулся с таким вопросом на работе.
Необходимо создать меню из картинок, число и путь картинок передает сервер.
От флеша зависит их расстановка.

Я получаю две переменные xx и yy. Первая переменная хранит кол-во картинок по оси Х, вторая переменная хранит кол-во столбцов.
Пример:
xx=5;
yy=3;
Соответственно мне нужно расставить по 5 картинок в 3 строки (в сумме 15).

+ мне передают какой то юрл с месторасположением картинок, причём картинки разные.

И желательно проверять данные через EnterFrame;

Подскажите пожалуйста.

dark256 17.03.2011 00:11

У вас серия утверждений. Вопроса не состоялось.

Alexvblbl 17.03.2011 00:41

Цитата:

Сообщение от dark256 (Сообщение 981101)
У вас серия утверждений. Вопроса не состоялось.

Так ну попробую разжевать.

Есть функция получения данных, а точнее двух переменных:
Код AS1/AS2:

var getter:LoadVars = new LoadVars();
getter.onLoad = function(success:Boolean) {
    if (success) {
                _root.xLine=this.xx;
                _root.yLine=this.yy;
                postr (xLine, yLine);
            trace(_root.xLine);
                //trace(yLine);
    } else {
    trace("Error loading/parsing LoadVars.");
    }
};
getter.load("text.txt");

После чего я получаю глобальные переменные xLine и yLine.

Которые отвечают соответственно:
xLine за кол-во картинок в строке;
yLine за кол-во строк.

Необходима функция которая последовательно расставит муви клипы по сцене, с учетом ширины окна сцены.
И что бы в каждый ново созданный муви клип загружалась картинка адрес которой передает сервер.

Tails 17.03.2011 00:58

Ширина сцены:
Код AS1/AS2:

trace(Stage.width);

Раставить циклом вложеным в цикл, нечто вроде:
Код AS1/AS2:

var clipWidth:Number =     90;
var clipHeight:Number  =  50;
 
for(i=1;        i <= parseInt(yLine);    i++){
    for(j=1;    j <= parseInt(xLine);    j++){
 
    myClip._x =  j*clipWidth;
    myClip._y =  i*clipHeight;
    }
}

Грузить картинку при помощи loadClip, после загрузки масштабировать её. В хэлпе есть исчерпывающее описание и примеры по загрузке, не буду сюда перекопировывать.

Alexvblbl 17.03.2011 03:10

Есть такая функция:
Код AS1/AS2:

function postr () 
{
    count = 0;
    leftPadding = 10;
    topPadding = 10;
    widthMovie = 50;
    heihtMovie = 50;
 
    lengtH = 5;
 
    if( !( (_root.xLine * widthMovie + _root.xLine * lengtH ) < Stage.width &&
          (_root.yLine * heihtMovie + _root.yLine * lengtH ) < Stage.height ) )
    {
          _root.AL.text="ВЫ превысили число элементов в строке";
    }
    for (i = 0; i < _root.xLine; i++)
    {
          for(j = 0; j < _root.yLine; j++)
          {
              (_root.xLine);
              mcName =  "sampleMC" + count++;
              _root.attachMovie("sampleMC", mcName, _root.getNextHighestDepth());
              getImg (); // функция загрузки картинки в муви клип
 
              _root[mcName]._x = leftPadding + widthMovie * i + i * lengtH;
              _root[mcName]._y = topPadding + heihtMovie * j + j * lengtH;
 
              _root[mcName].onEnterFrame = function()
                                                  {
 //по идее тут анимация
}
 
          }
    }
 
    _root.countMovies = count;
}

Как мне теперь сделать простую анимацию на эти мувики(мувик хранит в себе картинку)? Что бы при наведении мувик увеличивался (onRollOver), при отведении становился прежним (onRollOut) ?

Tails 17.03.2011 09:36

Удалите onEnterFrame, зачем вы его вешаете на каждую кнопку ?

Увеличение/уменьшение:
Код AS1/AS2:

_root[mcName].onRollOver = function(){
    this._xscale=this._yscale = 120;
}
_root[mcName].onRollOut = function(){
    this._xscale=this._yscale = 100;
}

И вопросик можно ? Что сиё означает (_root.xLine); ? :)

ещё вот это:
Код AS1/AS2:

 mcName =  "sampleMC" + count++;

так вы получаете строку, компилятор может конеш догадаеться что вы надумали и скомпилирует как надо, но правильнее будет получать ссылку:
(ставить после attachMovie)
Код AS1/AS2:

mcName =  eval("_root.sampleMC" + count++);


Hauts 17.03.2011 11:03

Tails, еще проще можно:

Код AS1/AS2:

var mcName = "sampleMC"+count;
var mc = _root.attachMovie("sampleMC", mcName, _root.getNextHighestDepth());
mc._x = leftPadding+widthMovie*i+i*lengtH;
mc._y = topPadding+heihtMovie*j+j*lengtH;

А вот eval там совсем не нужен :)

Alexvblbl 17.03.2011 16:22

Tails
Ну, да посмотрев на код реально нашел лишнее:
onEnterFrame на каждую кнопку убрал.
(_root.xLine) - удалил :)

На счёт увелечения уменьшения оно работает, если в мувик не вкладывать картинку. А у меня есть функция:
Код AS1/AS2:

function getImg () {
                if (_root.img>0){
                        loadMovie(_root.img+".jpg", _root[mcName])
                        _root.img--;
                }else{
                        loadMovie(_root.img+1+".jpg", _root[mcName])
                }
}

Кста сейчас дали задание написать её по другому, то есть будет массив на JS (Array), с примерно такой записью:
0=("img1.jpg", "http://urlperehoda");
1=("img1.jpg", "http://urlperehoda");
...
Как настроить мост между этим массивом и моей функцией?
Как используя этот массив вкладывать в каждый ново-приатаченный объект картинку что хранит массив, и ставить на эту картинку onPress (greURL - тот, что передает массив)?


Добавлено через 38 секунд
Цитата:

Сообщение от Hauts (Сообщение 981187)
Tails, еще проще можно:

Код AS1/AS2:

var mcName = "sampleMC"+count;
var mc = _root.attachMovie("sampleMC", mcName, _root.getNextHighestDepth());
mc._x = leftPadding+widthMovie*i+i*lengtH;
mc._y = topPadding+heihtMovie*j+j*lengtH;

А вот eval там совсем не нужен :)

Спасибо но так не работает функция с картинками :(

Tails 17.03.2011 18:42

О боже, сколько вопросов :wacko:

Всё по порядку:
  1. Флеша загрузилась на сайте, ... ок
  2. Ждём загрузки массива с данными. пс Про мост Flash <-> Js тут
  3. Данные получили - раставили по переменным/масивам - кому как удобно.
  4. Начинаем атачить контейнеры для картинок
  5. В цикле где атачаться контейнеры, можно сразу, на пока ещё пустой контейнер вешать ссылку URL, полученную из пункта 3
  6. Тут-же в цикле, в новосозданный контейнер грузить и картинки.

както так

Alexvblbl 17.03.2011 19:25

Цитата:

Сообщение от Tails (Сообщение 981326)
О боже, сколько вопросов :wacko:

Всё по порядку:
  1. Флеша загрузилась на сайте, ... ок
  2. Ждём загрузки массива с данными. пс Про мост Flash <-> Js тут
  3. Данные получили - раставили по переменным/масивам - кому как удобно.
  4. Начинаем атачить контейнеры для картинок
  5. В цикле где атачаться контейнеры, можно сразу, на пока ещё пустой контейнер вешать ссылку URL, полученную из пункта 3
  6. Тут-же в цикле, в новосозданный контейнер грузить и картинки.

както так

Вот то и самый главный вопрос:"Ждём загрузки массива с данными..."

Дело в том, что я этот мост находил. Но как вытащить массив? А точнее данные с него. Причём там написано так:
Код AS1/AS2:

var loaderArray=new Array(
a="1.jpg, http://afd.org.ua",
b="2.jpg, http://shfl.dn.ua",
c="3.jpg, http://flasher.ru"
)

то есть мне каким то образом надо вытащить ссылку на первую картинку и присвоить ссылку http://...

Добавлено через 2 часа 53 минуты
Хорошо теперь есть другой вопрос, я получил данные из JS (ну точнее массив). Он выглядит так:
1.jpg,2.jpg,3.jpg - как мне его разбить на отдельные картинки и присваивать их моим приатаченным объектам ?
Массив пока без ссылок.


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

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