PDA

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


zveryuka
12.04.2010, 13:53
Добрый день.

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

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

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
bob.onRollOver = fncOver;
bob.onRollOut = fncOut;

function fncOver(){
this._alpha = 0.5;
}

function fncOut(){
this._alpha = 1;
}

zveryuka
12.04.2010, 14:25
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 или ссылке. Например так:

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
вот для большей ясности - как у меня в проекте расположены обьекты ...

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 уж больно неповоротлив))

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