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

Alex626 30.05.2012 16:35

Параметры качества импортированного через скрипт изображения
 
Добрый день!

Меня интересует вопрос: как регулировать параметры сжатия и сглаживания у импортируемого через скрипт изображения? Например, когда я добавляю картинку в библиотеку, я могу настраивать параметры сжатия и сглаживания (jpeg - 65%, png - lossless итд). А вот при загрузке через скрипт вот таким кодом:

Код AS1/AS2:

mc.preview.loadMovie(iconPath);

как можно управлять качеством?

mooncar 30.05.2012 17:28

Сглаживание:
Код AS1/AS2:

mc.preview.forceSmoothing = true ;

Только применять его надо после загрузки, а у вас это нельзя сделать, потому что вы используете loadMovie, а не MovieClipLoader.
loadMovie не дает возможности отследить готовность.

Напишите, какую практическую цель вы преследуете вашим вопросом.

Hauts 30.05.2012 18:56

mooncar, кстати, нечто похожее на MovieClipLoader можно и с loadMovie сделать:

Код AS1/AS2:

_global.extendedLoadMovie = function() {
        var p = _global.extendedLoadMovie.prototype;
        if (!p.inited) {
                p.loadsCounter = 0;
                p.listeners = [];
                var d = _root.getNextHighestDepth();
                this.capturer = _root.createEmptyMovieClip("____onEnterFrameCapturer" + new Date().getTime(), d);
                this.capturer.onEnterFrame = function() {
                        var l = p.loads;
                        if (l.length) {
                                for (var i in l) {
                                        var curLoad = l[i];
                                        var mc = curLoad.mc;
                                        var listener = p.listeners[curLoad.id];
                                        var self = curLoad.self;
                                        if (listener) {
                                                var lb = mc.getBytesLoaded();
                                                var tb = mc.getBytesTotal();
                                                if (isNaN(lb / tb)) {
                                                        self.calledOnLoadStart = false;
                                                        self.loadInitCalled = false;
                                                } else {
                                                        if (!self.calledOnLoadStart) {
                                                                self.calledOnLoadStart = true;
                                                                listener.onLoadStart(mc);
                                                        }
                                                        listener.onLoadProgress(mc,lb,tb);
                                                        if (lb == tb && !self.loadInitCalled) {
                                                                self.loadInitCalled = true;
                                                                listener.onLoadInit(mc);
                                                        } else {
                                                                listener.onLoadComplete(mc);
                                                                l.splice(self.loadId,1);
                                                        }
                                                }
                                        }
                                }
                        }
                };
                p.inited = true;
                p.loads = [];
                p.loadClip = function(src, loadTo) {
                        this.calledOnLoadStart = false;
                        this.loadInitCalled = false;
                        loadTo.loadMovie(src);
                        p.loads.push({mc:loadTo, id:this.loadId, self:this});
 
                };
                p.addEventListener = function(listener) {
                        p.listeners[this.loadId] = listener;
                };
        }
        this.loadId = p.loadsCounter;
        p.loadsCounter++;
};
 
 
 
var loaderClip = this.createEmptyMovieClip("loaderClip", 1);
var loader = new extendedLoadMovie();
var loaderListener = {};
loaderListener.onLoadStart = function(target) {
        trace(target + " loads started");
};
loaderListener.onLoadProgress = function(target, loadedBytes, totalBytes) {
        trace(target + " load progress: " + loadedBytes + "/" + totalBytes);
};
loaderListener.onLoadInit = function(target) {
        trace(target + " load init");
};
loaderListener.onLoadComplete = function(target) {
        trace(target + " load complete\n\n\n");
};
loader.addEventListener(loaderListener);
loader.loadClip("http://tankionline.com/ru/wp-content/themes/tanki_new/images/bg-main-summer-new.jpg",loaderClip);
 
this.onMouseDown = function() {
        loader.loadClip("http://www.flasher.ru/forum/image.php?u=62719&dateline=1327096384",loaderClip);
};

Но это, конечно же, извращение. Но работает в 6-ой версии плеера :)

Alex626 30.05.2012 19:34

Мне в принципе не нужно сразу делать сглаживание.

Я на сцене перетаскиваю клипы, и часто после перетаскивания меняется их размер, немного непропорционально, поэтому появляются заострённые края.

Hauts 30.05.2012 19:38

Поставьте _quality = "best" где-нибудь в начале ролика, в коде.

mooncar 30.05.2012 19:44

Повторюсь - включить режим сглаживания можно с помощью свойства forceSmoothing, это помогает. Попробуйте применить это свойство к контейнеру, но уже после гарантированной загрузки в него изображения. Без использования MCL сами думайте когда у вас наступает такой момент. А сразу - не сразу, это не совсем верный контекст - для контейнера важно событие загрузки.
Тогда заостренных краев при перетаскивании быть не должно.

Alex626 30.05.2012 19:47

Согласен, это помогает. Поставлю включение сглаживания после перетаскивания.

klaustrofobia 16.04.2015 13:27

Цитата:

Сообщение от Hauts (Сообщение 1082186)
Поставьте _quality = "best" где-нибудь в начале ролика, в коде.

Спасибо тебе, добрый человек!) Так просто и эффективно! =)) Правда, оказывается, не всегда))


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

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