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

Bitcoolman 02.11.2009 15:47

одна функция удаляет другую, как по другому написать??
 
Клип состоит в том что стоит гараж(mc), немного размытый, я навожу на него и он становится четким, навожу на ворота(mc1) и они поднимаются. вот код
Код AS1/AS2:

mc.filters = [new flash.filters.BlurFilter(10, 10, 1)];
import flash.filters.BlurFilter
var blur:Number = 10;
mc.onRollOut = function(){
    blur = 0
    this.onEnterFrame = function(){
      mc.filters = [new BlurFilter(blur,blur,1)];
        if((blur+=1)>=10) delete this.onEnterFrame;
    }
}
mc.onRollOver = function(){
    this.onEnterFrame = function(){
        mc.filters = [new BlurFilter(blur,blur,1)];
        if((blur-=1)<=0) {
            mc.filters = null;
            delete this.onEnterFrame;
        }
    }
}
function zoomIn() {
        this.onEnterFrame = function() {
                if (this._yscale<100) {
                        this._yscale += 5;
                }
        };
}
function zoomOut() {
        this.onEnterFrame = function() {
                if (this._yscale>10) {
                        this._yscale -= 5;
                }
        };
}
mc.mc1.onRollOver = zoomOut;
mc.mc1.onRollOut = zoomIn;

проблема в том что ворота гаража не поднимаются... просьба в совете, как можно по другому написать сие дело??:)
PS: дверь(mc1) находится в клипе с гаражом(mc) и сделана отдельным мувиком могу приложить файл если нужно.

AzagThoth 02.11.2009 16:03

Определи новое свойство для ворот
Код AS1/AS2:

[]


Bitcoolman 02.11.2009 16:03

Вложений: 1
http://www.flasher.ru/forum/attachme...1&d=1257163360

Bitcoolman 02.11.2009 16:05

onEnterFrame удаляет блюр...новое свойство не поможет...пробовал(((

AzagThoth 02.11.2009 16:12

Можно попробовать что-то типа этого сделать.
Код AS1/AS2:

for(i=0; i<10; i++){
        for(j=0; j<10; j++){
                //trace(''+i+"  "+j);
                attachMovie('Мувиклип','Кубик'+i+j,getNextHighestDepth(),{_x:100+j*28.30,_y:100+i*42.40,useHandCursor:false});
                eval('Кубик'+i+j)["per"]=10;
                eval('Кубик'+i+j)["perx"]=eval('Кубик'+i+j)._y;
        }
}
 
setInterval(search,20);
 
function search(){
        for(var i in _root){
                if(eval(i)["per"]==10){
                        if(eval(i)._ymouse>0 & eval(i)._xmouse>0 & eval(i)._ymouse<eval(i)._height & eval(i)._xmouse<eval(i)._width){
                                eval(i)._y=eval(i)['perx']-eval(i)['per'];
                        }
                        else{
                                eval(i)._y=eval(i)['perx'];
                        }
 
                }
                updateAfterEvent();
        }
}

Всмысле всё время проверять висит ли курсор мыши над дверью и как только он появлется шатать дверь.

Bitcoolman 02.11.2009 16:16

ох ё...что то Я не понял что тут что(((

Добавлено через 9 минут
он не читабелен...

AzagThoth 02.11.2009 16:46

Да я просто баловался с кубиками... функция сёрч работает всегда и когда над каким то кубиком мышку держу он шевелится.. Когда убираю он в исходное состояние возвращается. Не очень оптимально конечно, но на глаз работает. Когда клип в клипе тоже по идее работать будет только нужно функцию саму на себе замкнуть чтоб она все уровни мувиклипа проверила. Безусловно это не лучший способ, но всё же способ.

Добавлено через 12 минут
Рассматривал твой код... Заметил что если закоментить

Код AS1/AS2:

e1.filters = [new flash.filters.BlurFilter(10, 10, 1)];
import flash.filters.BlurFilter
var blur:Number = 10;
/*e1.onRollOut = function(){
    blur = 0
    this.onEnterFrame = function(){
      e1.filters = [new BlurFilter(blur,blur,1)];
        if((blur+=1)>=10) delete this.onEnterFrame;
    }
}
e1.onRollOver = function(){
    this.onEnterFrame = function(){
        e1.filters = [new BlurFilter(blur,blur,1)];
        if((blur-=1)<=0) {
            e1.filters = null;
                  delete this.onEnterFrame;
        }
    }
}*/

function zoomIn() {
        this.onEnterFrame = function() {
                if (this._yscale<100) {
                        this._yscale += 5;
                }
        };
}
function zoomOut() {
        this.onEnterFrame = function() {
                if (this._yscale>10) {
                        this._yscale -= 5;
                }
        };
}
e1.ee.onRollOver = zoomOut;
e1.ee.onRollOut = zoomIn;

То дверь поднимается, если сделать так:


Код AS1/AS2:

e1.filters = [new flash.filters.BlurFilter(10, 10, 1)];
import flash.filters.BlurFilter
var blur:Number = 10;
e1.onRollOut = function(){
/*    blur = 0
    this.onEnterFrame = function(){
      e1.filters = [new BlurFilter(blur,blur,1)];
        if((blur+=1)>=10) delete this.onEnterFrame;
    }
*/

}
e1.onRollOver = function(){
/*
    this.onEnterFrame = function(){
        e1.filters = [new BlurFilter(blur,blur,1)];
        if((blur-=1)<=0) {
            e1.filters = null;
                  delete this.onEnterFrame;
        }
    }
*/

}
function zoomIn() {
        this.onEnterFrame = function() {
                if (this._yscale<100) {
                        this._yscale += 5;
                }
        };
}
function zoomOut() {
        this.onEnterFrame = function() {
                if (this._yscale>10) {
                        this._yscale -= 5;
                }
        };
}
e1.ee.onRollOver = zoomOut;
e1.ee.onRollOut = zoomIn;


То когда наводим курсор на "гараж" и на дверь то всё остаётся размытым... Полагаю тут фишка в цепочки видимости у мувиклипов... То есть "нижний" мувиклип за место своего метода по onRollOut и onRollOver пользует метод родителя... Если метод родителя не описан то пользует свой..
Копаюсь дальше, надеюсь разгадаем этот ребус.

Bitcoolman 02.11.2009 17:02

Я по этому и думал как по другому обозначить в случае ворот EnterFrame)) Блин...уже голову сломал...второй день думаю как можно обойти это удаление(((

Добавлено через 42 минуты
задача решена)))

AzagThoth 02.11.2009 18:09

Как решил?


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

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