Форум 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)
-   -   Нужна помощь, немогу задать свойство подклассу в цикле (for) (http://www.flasher.ru/forum/showthread.php?t=128384)

Alishka 06.08.2009 17:14

Нужна помощь, немогу задать свойство подклассу в цикле (for)
 
Это скрипт галереи. изначально при "onPress" вызывалась функция drag() и фото можно было передвигать теперь мне это не нужно, а нужно чтобы при клике вызывалась функция getURL но при генерации фоток из галереи устанавливается одна ссылка на все фото, а в XML файле они разные. Не могу понять почему..

Вот XML

Цитата:

<?xml version="1.0" encoding="utf-8"?>
<photos>
<photo ids="1" desc="test1" url="/pics/1.jpg" />
<photo ids="2" desc="test2" url="/pics/2.jpg" />
<photo ids="3" desc="test3" url="/pics/3.jpg" />
</photos>
Вот ActionScript думаю смотреть надо в начале функции byggBilder()

Код AS1/AS2:

 
 
import flash.filters.*;
import flash.display.BitmapData;
 
var photoHolder = new Array();
var skalerTempo = 3;
var thumbStr = 30;
var stageHeight = Stage.height;
var stageWidth = Stage.width;
var fotoSkygge:DropShadowFilter = new DropShadowFilter(0, 45, 0x333333, 0.8, 10, 10, 2, 3);
var glow:GlowFilter = new GlowFilter(0x333333, 100, 150, 150, 1.5, 3, true, true);
var bakgrunnPattern:BitmapData = BitmapData.loadBitmap("bakgrunna");
// </vars>
////////////////////////////////
////////////////////////////////
// <init>
_root.createEmptyMovieClip("bakgrunsHolder", _root.getNextHighestDepth());
_root.createEmptyMovieClip("sideGlow", _root.getNextHighestDepth());
// </init>
////////////////////////////////
////////////////////////////////
// <generer fotovariabler>
//flickrTAGS = (flickrTAGS) ? flickrTAGS:"";
xmlURL = (xmlURL) ? xmlURL : "photos.xml";
//xmlURL = (flickrID) ? "http://api.flickr.com/services/feeds/photos_public.gne?id="+flickrID+"&tags="+flickrTAGS+"&tagmode=any&format=rss_200":xmlURL;
////
// Flickr feed
////
var loadet_xml:XML = new XML();
loadet_xml.ignoreWhite = true;
loadet_xml.onLoad = function(success) {
        var loop = (flickrID) ? loadet_xml.firstChild.firstChild.childNodes : loadet_xml.firstChild.childNodes;
        var num = 0;
        /*
 
if (flickrID) {
                for (var i = 0; i<loop.length; i++) {
                        if (loop[i].nodeName == "item") {
                                var loop2 = loop[i].childNodes;
                                photoHolder[num] = new Array();
                                for (var i2 = 0; i2<loop2.length; i2++) {
                                        if (loop2[i2].nodeName == "media:content") {
                                                photoHolder[num].url = loop2[i2].attributes.url;
                                        } else if (loop2[i2].nodeName == "ids") {
                                                photoHolder[num].ids = loop2[i2].firstChild;
                                        } else if (loop2[i2].nodeName == "title") {
                                                photoHolder[num].desc = loop2[i2].firstChild;
                                        }
                                }
                                num++;
                        }
                }
        } else {
 
*/

 
 
                for (i=0; i<loop.length; i++) {
                        photoHolder[i] = loop[i].attributes;
                }
 
 
 
        ////////////////}
        delete loadet_xml;
        byggBilder();
};
loadet_xml.load(xmlURL);
 
 
 
 
 
function byggBilder() {
        for (i=0; i<photoHolder.length; i++) {
                mc = _root.attachMovie("fotoHolder", "fotoHolder"+i, _root.getNextHighestDepth(), {_xscale:thumbStr, _yscale:thumbStr, _rotation:30-60*Math.random()});
                mc.txt.text = photoHolder[i].desc; // устанавливаем название фотки под картинкой
 
                mc.onPress = function() { getURL("http://mysite.com/"+photoHolder[i].ids,"_blank"); } /* Тут ПРОБЛЕМА.. ссылка получается "mysite.com/undefined" а если photoHolder[i].ids задать как var то для всех фоток 1 и та же ссыла выходит :( помогите */
 
 
                if (Math.round(Math.random()*1) == 1) {
                        // tilfeldig y akse
                        mc._y = (Stage.height*Math.random())+(mc._height*2);
                        if (Math.round(Math.random()*1) == 1) {
                                mc._x = Stage.width+(mc._width*2);
                        } else {
                                mc._x = -(mc._width*2);
                        }
                } else {
                        // tilfeldig x akse
                        mc._x = (Stage.width*Math.random())+(mc._width*2);
                        if (Math.round(Math.random()*1) == 1) {
                                mc._y = Stage.height+(mc._height*2);
                        } else {
                                mc._y = -(mc._height*2);
                        }
                }
                mc.newX = Math.round((mc._width/2)+(Stage.width-mc._width)*Math.random());
                mc.newY = Math.round((mc._height/2)+(Stage.height-mc._height)*Math.random());
                mc.oldRotation = mc._rotation;
                mc.oldX = mc.newX;
                mc.oldY = mc.newY;
                mc.startX = mc._x;
                mc.startY = mc._y;
                mc.oldHeight = mc._yscale;
                mc.oldWidth = mc._xscale;
                mc.id = i;
                mc.onEnterFrame = fotoAnimer;
                mc.filters = [fotoSkygge];
                //mc.dragPol.onPress = function() { getURL("/user/"+linkedurl[i],"_blank"); }
                mc.dragPol.onReleaseOutside = mc.dragPol.onRelease=stopdrag;
                photoHolder[i].mc = mc;
                lastBilde(mc, photoHolder[i].url);
                delete mc;
        }
        antallBilder = i;
}
function lastBilde(mc, url) {
        mc.createEmptyMovieClip("tmp", mc.getNextHighestDepth());
        lastBildeH.loadClip(url, (flickrID) ? mc.bildeHolder : mc.tmp);
}
var lastBildeH:MovieClipLoader = new MovieClipLoader();
var lastBildeHL:Object = new Object();
lastBildeHL.onLoadStart = function(mc:MovieClip):Void  {
        mc._parent.attachMovie('preLoader', 'preloader', mc._parent.getNextHighestDepth());
        loaderFarge = new Color(mc._parent.preloader);
        mc._parent.preloader.loadtxt.text = "";
        loaderFarge.setRGB(0xFFFFFF);
        mc._parent.preloader._y = -10;
        mc._visible = false;
};
lastBildeHL.onLoadProgress = function(mc:MovieClip, numBytesLoaded:Number, numBytesTotal:Number):Void  {
        var numPercentLoaded:Number = numBytesLoaded/numBytesTotal*100;
        mc._parent.preloader.percent._width = numPercentLoaded;
};
lastBildeHL.onLoadInit = function(mc:MovieClip) {
        mc._parent.preloader.removeMovieClip();
        var mc2 = mc._parent.bildeHolder;
        if (!flickrID) {
                var myBitmap = new BitmapData(mc._width, mc._height, true, 0xFFFFFF);
                myBitmap.draw(mc);
                mc._parent.bildeHolder.attachBitmap(myBitmap, mc._parent.bildeHolder.getNextHighestDepth(), "auto", true);
                mc.removeMovieClip();
        }
        /////
        // scale and place image
        ////
        var wP = 468/mc2._width;
        var hP = 450/mc2._height;
        mc2._width *= (wP<hP) ? hP : wP;
        mc2._height *= (wP<hP) ? hP : wP;
        mc2._x += -((mc2._width-468)/2);
        mc2._y += -((mc2._height-450)/2);
        mc2._visible = true;
};
lastBildeH.addListener(lastBildeHL);
// </bygg polaroids>
////////////////////////////////
////////////////////////////////
// <hjelpeboks>
_root.attachMovie("help", "help", _root.getNextHighestDepth());
help._x = 42;
help._y = 48;
help.filters = [fotoSkygge];
// </hjelpeboks>
////////////////////////////////
function rensFilm() {
        for (i=0; i<antallBilder; i++) {
                mc = eval("fotoHolder"+i);
                mc.oldY = mc.startY;
                mc.oldX = mc.startX;
                mc.onEnterFrame = fotoAnimerTilbake;
                removeMovieClip(navigering);
        }
}
function fotoAnimer() {
        this._y += (this.newY-this._y)/skalerTempo;
        this._x += (this.newX-this._x)/skalerTempo;
        if (Math.round(this._y) == this.newY) {
                delete this.onEnterFrame;
        }
}
function fotoAnimerTilbake() {
        this._y += (this.oldY-this._y)/skalerTempo;
        this._x += (this.oldX-this._x)/skalerTempo;
        this._xscale += (this.oldWidth-this._xscale)/skalerTempo;
        this._yscale += (this.oldHeight-this._yscale)/skalerTempo;
        this._rotation += (this.oldRotation-this._rotation)/skalerTempo;
        this.nesteKnapp._alpha += (0-this.nesteKnapp._alpha)/skalerTempo;
        this.forrigeKnapp._alpha += (0-this.forrigeKnapp._alpha)/skalerTempo;
        if ((Math.round(this._y) == this.oldY) && (Math.round(this._x) == this.oldX)) {
                delete this.nesteKnapp.onRelease;
                delete this.forrigeKnapp.onRelease;
                delete this.onEnterFrame;
        }
}
function fotoSkaler() {
        this._xscale += (100-this._xscale)/skalerTempo;
        this._yscale += (100-this._yscale)/skalerTempo;
        this._rotation += (this.newRotation-this._rotation)/skalerTempo;
        this._x += ((Stage.width/2)-this._x)/skalerTempo;
        this._y += ((Stage.height/2)-this._y)/skalerTempo;
        this.nesteKnapp._alpha += (60-this.nesteKnapp._alpha)/skalerTempo;
        this.forrigeKnapp._alpha += (60-this.forrigeKnapp._alpha)/skalerTempo;
        if (Math.round(this._width) == this.newWidth) {
                delete this.onEnterFrame;
        }
}
 
...............
..................
 
var stageL:Object = new Object();
stageL.onResize = function() {
        for (i=0; i<antallBilder; i++) {
                mc = eval("fotoHolder"+i);
                if (mc != fotoSomBlirVist) {
                        mc._x = Math.round(Stage.width*(mc._x/stageWidth));
                        mc._y = Math.round(Stage.height*(mc._y/stageHeight));
                } else {
                        fotoSomBlirVist._x = Stage.width/2;
                        fotoSomBlirVist._y = Stage.height/2;
                }
                mc.oldX = Math.round(Stage.width*(mc.oldX/stageWidth));
                mc.oldY = Math.round(Stage.height*(mc.oldY/stageHeight));
                mc.newX = Math.round(Stage.width*(mc.newX/stageWidth));
                mc.newY = Math.round(Stage.height*(mc.newY/stageHeight));
                mc.startX = Math.round(Stage.width*(mc.startX/stageWidth));
                mc.startY = Math.round(Stage.height*(mc.startY/stageHeight));
        }
        stageWidth = Stage.width;
        stageHeight = Stage.height;
        //fillBG();
        //        fyllGlow();
};
Stage.addListener(stageL);
////////////////////////////////
/* <bakgrunn>
 
function fillBG() {
with (bakgrunsHolder) {
clear();
beginBitmapFill(bakgrunnPattern);
moveTo(0,0);
lineTo(Stage.width,0);
lineTo(Stage.width,Stage.height);
lineTo(0,Stage.height);
lineTo(0,0);
endFill();
}
}
 
function fyllGlow() {
with (sideGlow) {
clear();
filters = [glow];
beginFill(0xFFFFFF);
moveTo(0, 0);
lineTo(Stage.width, 0);
lineTo(Stage.width, Stage.height);
lineTo(0, Stage.height);
lineTo(0, 0);
endFill();
}
}
 
fillBG();
fyllGlow();
// </bakgrunn>
///////////////////////////////
*/


alexcon314 06.08.2009 17:34

Цитата:

mc = _root.attachMovie("fotoHolder....
а если так
Код:

var mc = _root.attachMovie("fotoHolder...

cleptoman 06.08.2009 20:08

вынесите инициализацию в отдельную функцию с передачей ссылки на ваш инстанс.

udaaff 06.08.2009 22:10

Код AS1/AS2:

...
function byggBilder() {
        for (i=0; i<photoHolder.length; i++) {
                mc = _root.attachMovie("fotoHolder", "fotoHolder"+i, _root.getNextHighestDepth(), {_xscale:thumbStr, _yscale:thumbStr, _rotation:30-60*Math.random()});
                mc.txt.text = photoHolder[i].desc; // устанавливаем название фотки под картинкой
                mc.url = photoHolder[i].url
                mc.onPress = function() { getURL("http://mysite.com" + this.url, "_blank"); }
                ...


Alishka 06.08.2009 23:44

спасибо всем за помощь я воспользовался методом предложенным от "udaaff" и все работает как швейцарские часы)))

DIS 04.02.2011 03:23

Добрый день, уважаемые!

Подскажите пожалуйста как убрать в данном скрипте темное свечение по контуру главного фона?

Hauts 05.02.2011 11:10

Наверное не применять фильтры к главному фону.


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

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