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

etc 01.09.2007 17:34

ScrollPane, кажется, в качестве contentPath принимает и URL…

Wolsh 01.09.2007 17:58

Принимает, да, но ведь только один? И что с ним дальше делать? :) Здесь грузится много картинок и выстраивается в одну колбасу. Эту колбасу, понятно, надо скроллировать. udaaff предлагает воспользоваться скроллпейн. Мне интересно (теоретически) как? Я вижу только один вариант - пустой мувик из либы (ну если угодно, можно и с урла взять), а в нем уже через content создавать эти самые контейнеры под картинки. Мороки выше крыши - постоянно меняющийся размер контента например.
И по мне так это некрасиво, скроллпейн. Для галереи во всяком случае.

udaaff 01.09.2007 18:19

Порылся в help: "contentPath indicates the content to load into the scroll pane. This value can be a relative path to a local SWF or JPEG file, or a relative or absolute path to a file on the Internet. It can also be the linkage identifier of a movie clip symbol in the library that is set to Export for ActionScript." Т.е. мувик можно грузить только из библиотеки, но ничто потом не мешает сделать, так, как ты и предложил -- загрузить в него контент:
Код:

System.security.allowDomain("http://www.helpexamples.com");

this.createClassObject(mx.containers.ScrollPane, "my_sp", 10);
my_sp.setSize(100, 100);
my_sp.contentPath = "my_mcID";

var container_mc:MovieClip = my_sp.content;

var content_mc:MovieClip = container_mc.createEmptyMovieClip("mc", container_mc.getNextHighestDepth());
content_mc.loadMovie("http://www.helpexamples.com/flash/images/image1.jpg");


dreaman 01.09.2007 22:37

все равно не помогает, скроллится только последняя картинка... че делать?
Код:

loader(10, 0, 1);
//
function loader(x0:Number, y0:Number, i:Number):Void {
//
var container:MovieClip = this.createEmptyMovieClip("tester_mc"+i, this.getNextHighestDepth());
container._y = y0;
container._x = x0;
//
var mclListener:Object = new Object();
mclListener.onLoadInit = function(target_mc:MovieClip) {
// --- рекурсия
loader(container._x, container._y+target_mc._height+5, ++i);

//////////////////////////// vot tut///////////////////////////////
butt.onRollOver=function(){
butt.onEnterFrame=function(){
        container._y-=10;
        trace(container._y);
}}
butt.onRollOut=function(){
        delete eval (onEnterFrame);
}
////////////////////////////////////////////////////////////////////

};
var image_mcl:MovieClipLoader = new MovieClipLoader();
image_mcl.addListener(mclListener);
image_mcl.loadClip("mypict_"+i+".jpg", "tester_mc"+i);
}


udaaff 01.09.2007 23:00

В твоем коде никакой логики нету: при вызове функции создается контейнер, ссылка на него записывается в переменную container, и каждый раз ты записываешь в обработчик событий функцию
Код:

function() {
                                container._y -= 10;
                                trace(container._y);
                        };

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

butt.onRollOver = function() {
                        butt.onEnterFrame = function() {
                                container._y -= 10;
                                trace(container._y);
                        };
                };
                butt.onRollOut = function() {
                        delete eval(onEnterFrame);
                };

в функцию. Создай контейнер в _root и в нем создавай субконтейнеры для картинок, а не в _root. Ну и прокручивай, соответственно, главный контейнер.

Больше всего меня интересует смысл этой строчки:
Код:

delete eval(onEnterFrame);

dreaman 01.09.2007 23:34

Цитата:

Сообщение от udaaff
Больше всего меня интересует смысл этой строчки:
Код:

delete eval(onEnterFrame);

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

udaaff 01.09.2007 23:57

Код:

var general:MovieClip = this.createEmptyMovieClip("general", this.getNextHighestDepth());
/*
  здесь: команды для передвижения general
*/
loader(0, 1);
//
function loader(x0:Number, i:Number):Void {
        //
        var container:MovieClip = general.createEmptyMovieClip("container"+i,general.getNextHighestDepth());
        container._x = x0;
        trace(container)
        //
        var mclListener:Object = new Object();
        mclListener.onLoadInit = function(target_mc:MovieClip) {
                // --- рекурсия
                loader(container._x+target_mc._width, ++i);
                //
        };
        var image_mcl:MovieClipLoader = new MovieClipLoader();
        image_mcl.addListener(mclListener);
        image_mcl.loadClip("image_"+i+".jpg", container);
}


dreaman 02.09.2007 00:27

респект, udaaff!!!
огромное спасибо, что помог разобраться


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

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