PDA

Просмотр полной версии : одна функция удаляет другую, как по другому написать??


Bitcoolman
02.11.2009, 15:47
Клип состоит в том что стоит гараж(mc), немного размытый, я навожу на него и он становится четким, навожу на ворота(mc1) и они поднимаются. вот код
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
Определи новое свойство для ворот
[]

Bitcoolman
02.11.2009, 16:03
http://www.flasher.ru/forum/attachment.php?attachmentid=23225&stc=1&d=1257163360

Bitcoolman
02.11.2009, 16:05
onEnterFrame удаляет блюр...новое свойство не поможет...пробовал(((

AzagThoth
02.11.2009, 16:12
Можно попробовать что-то типа этого сделать.
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 минут
Рассматривал твой код... Заметил что если закоментить

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;

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


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
Как решил?