Ru-Board.club
← Вернуться в раздел «Графика»

» Adobe (Macromedia) Flash. Самые разные вопросы.

Автор: KillDead
Дата сообщения: 21.04.2007 22:12
Вот появилась проблема с циклами:
Есть много текстовых полей ral1, ral2, ral3....
Нужно проверять одно условие у всех полей. Чтобы не писать огромный код пишу цикл:

Цитата:
    while (i<15 ){
        net = "_root.ral"+i;
        _root.otvtext.text = _root.otvtext.text+net;
        i += 1;
    }

Ну вобщем всё просто- нужно, чтобы переменная root.ral всё время в цикле увеличивалась на 1. Но вместо переменной получаю текстовое значение: _root.ral1 _root.ral2...
Можно вообще решить задачку таким образом? Или придётся писать 15 одинаковых условий?
Автор: Mr_EbOX
Дата сообщения: 22.04.2007 03:44
KillDead


Цитата:
net = "_root.ral"+i;
- вот тут получается твое текстовое значение из-за кавычек

а почему нельзя написать _root.ral+=1;
и есть ощущение, что ты не проверяешь условие, а просто присваиваешь по очереди значение в
Цитата:
_root.otvtext.text



Автор: KillDead
Дата сообщения: 22.04.2007 11:22

Цитата:
_root.ral+=1;

А как дальше обращаться с этой переменной?

Цитата:
и есть ощущение, что ты не проверяешь условие, а просто присваиваешь по очереди значение в

Просто здесь я само условие не написал, т.к. загвостка у меня в том, как в цикле оперировать переменными имя которых увеличивается на 1 т.е. надо сравнивать _root.ral1, _root.ral2.... _root.ral15. Ну в цикле должно быть примерно следующее:

Цитата:
        if( _root.ral1, _root.ral2.... _root.ral15 <1) {
            _root.otvtext.text = _root.otvtext.text+"www";
        } else {
            _root.otvtext.text = _root.otvtext.text+"000";
        }

Автор: Mr_EbOX
Дата сообщения: 22.04.2007 13:37
KillDead

_root.ral [i] - "массивное" представление, дальше сообразишь?)))
Автор: KillDead
Дата сообщения: 22.04.2007 21:49
Mr_EbOX
Всё решил проблему. Спасибо.
Автор: Dirge
Дата сообщения: 23.04.2007 17:46
Мне нужен исходник всплывающего горизонтального flash меню. Выложите плиз или киньте ссылку.

Добавлено:
нужно сделать из этой кнопки http://up.li.ru/?id=283633;hd.fla всплывающие flash меню, что бы такие-же кнопки всплывали.
Автор: KillDead
Дата сообщения: 23.04.2007 20:32
Вот что у меня получилось http://www.webbik.ru/hd[1].zip
Если не ошибаюь кнопка из шаболна монстров.
Автор: Dirge
Дата сообщения: 23.04.2007 22:43
KillDead

О! Thx, то что нужно! Шаблон да, монстровый.


Автор: InSe0F
Дата сообщения: 24.04.2007 00:26
Mr_EbOX
слушь, тупой вопрос:
модули типа *.as подключаются в процессе компиляции или в процессе исполнения?

просто мне надо как-то подгрузить переменные, причём чтобы это был файл легко редактируемый(в блокноте) и не требовал перекомпиляции флеша.
Автор: Mr_EbOX
Дата сообщения: 24.04.2007 03:11
InSe0F
в процессе исполнения....нужно чтобы файл находился в папке с *.swf
Автор: InSe0F
Дата сообщения: 24.04.2007 12:19
Mr_EbOX
хм, не хочет... компилирую, потом меняю переменные а они не меняются, чувствую придется разбираться как через xml переменные загружать
Автор: Dirge
Дата сообщения: 24.04.2007 19:57
KillDead

Пытаюсь вставить меню во флеш шапку, тоже от монстра - не работает. Почему-то не выполняется эта функция:


Цитата:


_root.submit.onEnterFrame = function() {
if (mouse_over_submit) {
_root.submit.nextFrame();
} else {
_root.submit.prevFrame();
}
};



Сама кнопка играет а меню не выскакивает. В чем может быть дело ?

если убрать:


Цитата:

} else {
_root.submit.prevFrame();


то меню выскакивает, но само по себе и мигает без анимации.

Вот как выглядит Timeline

http://up.li.ru/?id=283902;headers.jpg
Автор: KillDead
Дата сообщения: 24.04.2007 21:50

Цитата:

_root.submit.prevFrame();

Проверь пути. Раз монстры то скорее всего мумик submit в символе menu , т.е.

_root.menu.submit.prevFrame();
Автор: Mr_EbOX
Дата сообщения: 25.04.2007 03:07
InSe0F

Вот чего написано в help

NOTE

ActionScript code in external files is compiled into a SWF file when you publish, export, test, or debug a FLA file. Therefore, if you make any changes to an external file, you must save the file and recompile any FLA files that use it.


получается, что не тот метод((
Автор: InSe0F
Дата сообщения: 25.04.2007 19:03
в общем чёт столкнулся с такой проблемкой, мож кто подскажет:
1) есть jpg, его размеры больше чем размеры окна флеша (800*600)
2) надо чтобы при масштабе (выполняется колёсиком мышки, т.е. скрулом) центр оставался центром.
(масштаб просиходит относительно (0,0) для mc, поэтому происходит смещение... (см. ниже)
Гружу jpg в mc

Код: _root.placeIMG = function(){
    this.createEmptyMovieClip("mc_map", 0);
    var loader:MovieClipLoader = new MovieClipLoader();
    loader.loadClip("map.jpg", mc_map);
    mc_map._x = _root.img_x0;
    mc_map._y = _root.img_y0;
}
Автор: Mr_EbOX
Дата сообщения: 26.04.2007 16:00
InSe0F

я не совсем еще разобрался в функциях, но по алгоритму есть вопросы:

переменная delta - откуда берет в себя значение, и изменяется ли она?? есть ощущение, что она не изменяется..потому как все вроде крутится вокруг изменения этой переменной..
Автор: InSe0F
Дата сообщения: 26.04.2007 19:02
Сообразил Вот так нада
Может кому пригодиться.

Код: // функция центрирования масштаба
_root.masshtab_center = function(delta:Number) {
    mc_map_c_xcenter = form_w/2 - mc_map._x; // сохраняем координаты старого центра
    mc_map_c_ycenter = form_h/2 - mc_map._y;
    mc_map_prev_xscale = mc_map._xscale;// сохраняем предыдущий масштаб
    mc_map_prev_yscale = mc_map._yscale;
    mc_map._xscale += delta; // масштабируем
    mc_map._yscale += delta;
    mc_map_new_xscale = mc_map._xscale; // сохраняем новый масштаб
    mc_map_new_yscale = mc_map._yscale;
    tmp_x = mc_map_c_xcenter*mc_map_new_xscale/mc_map_prev_xscale;// получаем новые координаты центра
    tmp_y = mc_map_c_ycenter*mc_map_new_yscale/mc_map_prev_yscale;
    mc_map._x = form_w/2 - tmp_x; // смещаем mc так чтобы центр оказался по середине окна
    mc_map._y = form_h/2 - tmp_y;
//    return;
    }
Автор: 4Life
Дата сообщения: 29.04.2007 22:48
Помогите пожалуйста, ни как немогу сделать такой эффект:
При загрузке картинке, нужно чтобы сначала прорисовались линии зданий, а потом они приняли черный цвет. Что-то наподобе как рисуют карандашом - сначала контур, затем закрашивают внутри. Помогите пожалуйста.
Вот картинка



Автор: KillDead
Дата сообщения: 30.04.2007 10:31
Что-то типо этого?
http://www.webbik.ru/Untitled-1.zip
Видел где-то урок по этой теме, но вроде всё понятно по исходнику.
Автор: 4Life
Дата сообщения: 30.04.2007 10:35

Цитата:
Что-то типо этого?

Да, вот так, только чуть помедленней и без вспышки в конце.
Автор: InSe0F
Дата сообщения: 30.04.2007 12:27
4Life
ну это же простейшая анимация....
если у тебя сама картинка векторная (что ты прикрепил сюда) то ещё проще, в ручную карандашом обведи её по кадрам(как она буде рисоваться) как в том исходнике, что тебе дали.
потом на следующем кадре(после обвода) залей её (можно даже с шейпом, чтобы медленнее,
а потом и небо.
если захотеть такую анимацию можно и программно сделать, сложных объектов на картинки нету.
Автор: 4Life
Дата сообщения: 30.04.2007 17:37

Цитата:
ну это же простейшая анимация....
если у тебя сама картинка векторная (что ты прикрепил сюда) то ещё проще, в ручную карандашом обведи её по кадрам(как она буде рисоваться) как в том исходнике, что тебе дали.
потом на следующем кадре(после обвода) залей её (можно даже с шейпом, чтобы медленнее,
а потом и небо.
если захотеть такую анимацию можно и программно сделать, сложных объектов на картинки нету.

Сделай пожалуйста, если можешь. У меня ничего не получается а время поджимает
Автор: InSe0F
Дата сообщения: 01.05.2007 01:35
4Life
не извиняй, свои проекты ща стоят...
Автор: 4Life
Дата сообщения: 01.05.2007 15:47
О, я понял как сделать Сейчас прорисовую потихоньку
Автор: InSe0F
Дата сообщения: 01.05.2007 16:47
4Life
если рисовать програмно то так:

Код:
points = new Array();// массив с координатами
points[0] = {x: 30, y: 30};
points[1] = {x: 60, y: 60};
points[2] = {x: 90, y: 70};
points[3] = {x: 180, y: 200};

_root.lineStyle(3,0xFF0000,100); // параметры типа линии, ТОЛЩИНА, ЦВЕТ, ПРОЗРАЧНОСТЬ
for(i=1;i<points.length;i++) { // ЦЫКЛ с 1, т.к. пермещаем точку в 0 (начало массива)
moveTo(points[i-1].x, points[i-1].y); // перемещаем точку
lineTo(points[i].x,points[i].y); // рисуем
}
Автор: 4Life
Дата сообщения: 01.05.2007 16:58
InSe0F
спасбо
Автор: KillDead
Дата сообщения: 01.05.2007 17:36
Вопрос:
Нужно перематывать основной монтажный стол на 1 кадр. А как это сделать из клипа? _root.nextFrame()?
Автор: InSe0F
Дата сообщения: 02.05.2007 01:01
KillDead, не если перемотать постепенно то в цикле конечно. while например
внутри тела конструкция (условие _root.tempFrame==0; или _root._currentframe==0;)
_root.tempFrame--;
_root.gotoAndPlay(_root.tempFrame);

это перед циклом
_root.tempFrame = _root._currentframe;

Добавлено:
клип конечно должен находиться во всех кадрах, чтобы код выполнялся.
Автор: KillDead
Дата сообщения: 02.05.2007 14:25
InSe0F
Спасибо, уже разобрался. Долго мучил документ, затем сделал его копию посредством copy, paste каждого объекта. В результате получил 2 совершенно одинаковых документа, один из которых не работает. Я плакалЪ
Автор: InSe0F
Дата сообщения: 02.05.2007 17:36
KillDead
не совсем понял что ты делал, но такое бывает, лучше просто сохранить под другим именем.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455

Предыдущая тема: Заказ на изготовления баннеров, логотипов и т.д


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.