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

zveryuka 12.04.2010 13:53

одна функция на массив
 
Добрый день.

У меня во флеш проект загружается с помощью ХМЛ много разных изображений как можно с помощью АС2 сделать такую штуку как в АС3 ?

Чтобы соответственно при наведении и клике на таргет выполнялись определенные действия
Код AS3:

bob.addEventListener(MouseEvent.MOUSE_OVER,fncOver)
bob.addEventListener(MouseEvent.MOUSE_OUT,fncOut)
 
function fncOver(e:MouseEvent){
        e.target.alpha = 0.5;
        }
 
function fncOut(e:MouseEvent){
        e.target.alpha = 1;
        }


Hauts 12.04.2010 14:00

Код AS1/AS2:

bob.onRollOver = fncOver;
bob.onRollOut = fncOut;
 
function fncOver(){
        this._alpha = 0.5;
}
 
function fncOut(){
        this._alpha = 1;
}


zveryuka 12.04.2010 14:25

Цитата:

Сообщение от Hauts (Сообщение 899851)
Код AS1/AS2:

bob.onRollOver = fncOver;
bob.onRollOut = fncOut;
 
function fncOver(){
        this._alpha = 0.5;
}
 
function fncOut(){
        this._alpha = 1;
}



так альфой делается целый мувиклип "bob" , а нужно сделать так чтобы альфился по отдельности каждый обьект который находиться в контейнере "bob"

udaaff 12.04.2010 14:32

Тут вам придется на каждый ваш мувик вешать обработчик.

Hauts 12.04.2010 14:32

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

Если нужно вложенным клипам менять прозрачность независимо друг от друга, то необходимо обращаться по их instance name или ссылке. Например так:
Код AS1/AS2:

bob.onRollOver = fncOver;
bob.onRollOut = fncOut;
 
function fncOver(){
        this.innerMovieClip_1._alpha = 50;
        this.innerMovieClip_2._alpha = 10;
}
 
function fncOut(){
        this.innerMovieClip_1._alpha = 100;
        this.innerMovieClip_2._alpha = 50;
}

Разве в вашем коде прозрачность применяется к вложенным мувиклипам?

udaaff 12.04.2010 14:36

Hauts, прозрачность применяется к целевому объекту. Обработчик будет ловить события как рассылаемые родителю, так и от детей на фазе всплытия.

zveryuka 12.04.2010 14:39

вот для большей ясности - как у меня в проекте расположены обьекты ...

Код AS1/AS2:

function loadXML(file_xml) {
        var xml:XML = new XML();
        var tmp:Array = new Array();
        xml.ignoreWhite = true;
        xml.onLoad = function(success) {
                if (success) {
 
                        var nodeJackets = xml.firstChild.firstChild.childNodes;
                        var nodepants = xml.firstChild.childNodes[2].childNodes;
                        var nodeAccessories = xml.firstChild.childNodes[1].childNodes;
 
 
 
                        //trace(nodeAccessories.length)
                        for (var i = 0; i<nodepants.length; i++) {
                                loadpants(i,nodepants[i].attributes.pants,nodepants[i].attributes.X,nodepants[i].attributes.Y);
                                loadJackets(i,nodeJackets[i].attributes.Jackets,nodeJackets[i].attributes.X,nodeJackets[i].attributes.Y);
                                loadAccessories(i,nodeAccessories[i].attributes.Accessories,nodeAccessories[i].attributes.X,nodeAccessories[i].attributes.Y);
 
                        }
                }
        };
        xml.load(file_xml);
}
 
///////////////////////////////////////////////pants
function loadpants(i, pants, xPost, yPost) {
 
        var target_mc:MovieClip = cont.createEmptyMovieClip("target"+i, cont.getNextHighestDepth());
 
        var mcl:MovieClipLoader = new MovieClipLoader();
        var obj:Object = new Object();
        obj.onLoadInit = function(mc:MovieClip) {
                mc._x = xPost;
                mc._y = yPost;
 
 
        };
        mcl.addListener(obj);
        mcl.loadClip(pants,target_mc);
}
///////////////////////////////////////////////Jackets
function loadJackets(i, Jackets, xPost, yPost) {
        var Jackets_mc:MovieClip = cont.createEmptyMovieClip("Jackets"+i, cont.getNextHighestDepth());
 
        var mclJackets:MovieClipLoader = new MovieClipLoader();
        var objJackets:Object = new Object();
        objJackets.onLoadInit = function(mcJackets:MovieClip) {
 
                mcJackets._x = xPost;
                mcJackets._y = yPost;
                mcJackets._xscale = 30;
                mcJackets._yscale = 30;
 
        };
        mclJackets.addListener(objJackets);
        mclJackets.loadClip(Jackets,Jackets_mc);
 
 
 
mcJackets.onRollOver = fncOver;
mcJackets.onRollOut = fncOut;
 
function fncOver(){
        this._alpha = 0.5;
}
 
function fncOut(){
        this._alpha = 1;
}
 
 
}
////////////////////////////////////////////////////Accessories
function loadAccessories(i, Accessories, xPost, yPost) {
        var Accessories_mc:MovieClip = cont.createEmptyMovieClip("Accessories"+i, cont.getNextHighestDepth());
 
        var mclAccessories:MovieClipLoader = new MovieClipLoader();
        var objAccessories:Object = new Object();
        objAccessories.onLoadInit = function(mcAccessories:MovieClip) {
 
                mcAccessories._x = xPost;
                mcAccessories._y = yPost;
 
                mcAccessories._xscale = 10;
                mcAccessories._yscale = 10;
        };
        mclAccessories.addListener(objAccessories);
        mclAccessories.loadClip(Accessories,Accessories_mc);
}
 
loadXML("bob.xml");

хотя только начал делать проект.. возможно лутше в АС3 переделать...(но АС3 тока начал разбирать (( )

Добавлено через 3 часа 21 минуту
хех...помучался, но все-таки переделал код в АС3 - ато АС2 уж больно неповоротлив))

спс всем за советы...


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

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