Форум 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=209216)

Маруська 21.10.2014 13:40

плавная анимация скриптом
 
написала скрипт и он хорошо работает. вот только не хватает анимаций. Пыталась вставить скрипт on EnterFrame для плавного появления и исчезновения slide'ов, но отчего-то _alpha для элементов массива v[kv] на выводе даёт undefined,так же как и _х и _y. Помогите написать конкретный скрипт, пожалуйста. в коде помечено комментариями, что я собственно хочу
Код AS1/AS2:

n = 8;
kv = 1;
game = this;
setTimeout(go,10);
rest=1;
import mx.transitions.Tween;
 
function go()
{
        //stop();
        var v:Array = new Array(n);
        var slideretrycount:Number = 1;
        for (i = 1; i <= n; i++)
        {
                v[i] = "slide" + i;
        }
 
        for (i = 1; i <= n; i++)
        {               
                game['bt' + i].onRollOver = function()
                {
                        if (kv != substring(this._name, 3, -1))
                        {        game['bt'+kv].gotoAndStop(1);
                                this.gotoAndStop(2);
                                rest=substring(this._name, 3, -1)-kv;
                                if (rest<=0){/*v[kv] плавная прозрачность с движением вверх*/}
                                if (rest>=0){/*v[kv] плавная прозрачность с движением вниз*/}
                                deleteslide()
                                kv = substring(this._name, 3, -1);
                                addslide();
                                setY();
                        }
                };
                game['bt' + i].onRollOut = function()
                {
                        if (kv != substring(this._name, 3, -1))
                        {
                                this.gotoAndStop(1);
                        }
                };
        }
        function addslide()
        {
                attachMovie(v[kv],v[kv],kv);
                setProperty(v[kv], _x, 30);
                setProperty(v[kv], _y, 40);
                setProperty(v[kv], _alpha, 100);
                if (rest<=0){/*v[kv] плавное появление с движением вверх*/}
                if (rest>=0){/*v[kv] плавное появление с движением вниз*/}
        }
        function deleteslide()
        {        m = v[kv];
          removeMovieClip(m);
        }
 
        function setY()
        {pos=1;       
        for (k = kv; k <= n; k++){pos++;game['bt'+k]._y=120+pos*3;}
        pos=1;
                for (k = kv; k >= 1; k--){pos++;game['bt'+k]._y=120+pos*3}
        }
 
        addslide();
        setY();
}


Sergey_A 21.10.2014 13:56

Для начала просто объявите этот массив не в функции, а в корне. Там, где у вас
Код AS1/AS2:

n = 8;
kv = 1;
var v:Array = new Array(n);

Тогда и undefined в другой функции не будет. Ну или передавайте его в качестве параметра.

Маруська 21.10.2014 14:06

Цитата:

Сообщение от Sergey_A (Сообщение 1173844)
Для начала просто объявите этот массив не в функции, а в корне.

объявила - всё равно свойство _alpha = undefined

Sergey_A 21.10.2014 14:24

Ну, тогда fla файл выкладывайте. Желательно, не в самой новой версии Adobe Flash сделанный, чтобы открыть можно было. А то так и не разберешся, где у вас что и что на что реагировать должно.

Маруська 21.10.2014 15:00

Вложений: 1
cs 5.0 подойдёт?
Вложение 31211

Sergey_A 21.10.2014 15:55

Что вы хотите получить в итоге, я все равно не понял. Хотя это уже красиво, по-моему. Но обращаться к свойствам у вас нужно не
Код AS1/AS2:

v[kv]._x

, а
Код AS1/AS2:

game[v[kv]]._x

, ятобы не было undefined.

Маруська 21.10.2014 16:04

чорт, спасибо.. вот жэ я тупая =(((

Добавлено через 9 часов 24 минуты
Так, снова добралась до скрипта и оказалось, что ни в каком символе game у меня слайды не лежат. Трейсить я их могу банально кодом
Код AS1/AS2:

trace (v[kv] )

Добавлено через 9 часов 35 минут
а вот
Код AS1/AS2:

trace( v[kv]._alpha)

выдаёт undefined

Добавлено через 9 часов 49 минут
Код AS1/AS2:

function deleteslide(mc:MovieClip)
        {       
                mc._alpha = 100;
                trace(mc._alpha)
                this.onEnterFrame = function()
                {
                mc._alpha -= 2;
                trace("new alpha: " + mc._alpha);
                if (mc._alpha < 0)
                        {
                        delete this.onEnterFrame;
                        trace("end deleteSlide");
                        }
                }
          removeMovieClip(mc);
        }

вот такая функция абсолютно точно должна хорошо работать, если бы не undefined на trace(mc._alpha)

Добавлено через 9 часов 53 минуты
может быть, проблема при загрузке клипа?
Код AS1/AS2:

function addslide()
        {
                attachMovie(v[kv],v[kv],kv);
                setProperty(v[kv], _x, 30);
                setProperty(v[kv], _y, 40);
                setProperty(v[kv], _alpha, 100);
                trace(v[kv]._alpha)//undefined
        }


Маруська 22.10.2014 02:50

Вложений: 1
окей, почти разобралась с проблемой. возникла другая.
Смогла заставить работать коды RemoveSlide и addSlide только один за одним. Было бы неплохо запускать их одновременно. И как то избавиться от зависаний, которые происходят при быстром скролле по всем кнопкам.
Помогите, кто чем может. Исходник вот тут Вложение 31212

razve 23.10.2014 11:26

Цитата:

Сообщение от Маруська (Сообщение 1173857)
а вот
Код AS1/AS2:

trace( v[kv]._alpha)

выдаёт undefined
[/as]

Посмотри.
Код AS1/AS2:

arr = new Array("ball");
trace(arr[0]._alpha);
//undefined
//
arr = new Array("ball");
trace(_root[arr[0]]._alpha);
//100
//
arr = new Array(ball);
arr[0]._alpha = 50;
trace(arr[0]._alpha);
//50
//
arr = new Array("ball");
mc = _root[arr[0]];
mc._alpha = 50;
trace(mc._alpha);
//50


dark256 23.10.2014 12:24

1. В массиве просто текстовая строка. У ней нет прозрачности.
2. В массиве тоже самое, но использутся уже как литерал объекта. Имя. _root[arr[0]] - ссылка на объект.
Можно записать как _root.ball или _root["ball"]
3. В массиве - имя объекта. Норм.
4. см. п.2.

Маруська 23.10.2014 21:32

Спасибо Вам, но сама разобралась раньше и вооон там даже исходник прикрепила.

dark256 23.10.2014 22:14

Цитата:

Сообщение от Маруська (Сообщение 1173999)
вооон там даже исходник прикрепила.

Status code: 404

razve 24.10.2014 09:31

Цитата:

Сообщение от Маруська (Сообщение 1173999)
Спасибо Вам, но сама разобралась раньше и вооон там даже исходник прикрепила.

Скинь для CS3.

Маруська 04.11.2014 13:34

Вложений: 1
Вложение 31239cs 5.0 минимум, во что я могу сохранить

Маруська 04.11.2014 13:36

При быстром проходе по разделам флешка виснет. Как это можно пофиксить? помогите!!!

razve 06.11.2014 12:29

Вложений: 1
Написал код с нуля (без классов, но летает).

Маруська 10.11.2014 08:10

оу, как здорово! поковыряла код.. когда уже мой мозг тоже будет так чётко работать????

razve 10.11.2014 09:32

может быть опрометчивым суждение) я новичок и за красоту кода не отвечаю)


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

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