Форум 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)
-   -   Загрузка jpg и присвоение ЕЙ Linkage (http://www.flasher.ru/forum/showthread.php?t=107849)

qwr 11.02.2008 04:30

Загрузка jpg и присвоение ЕЙ Linkage
 
Помогите. Уже не первый день мучаю вас вопросами. Наконец смог сформулировать и понять, что мне конкретно нужно.

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

Код:

function ldbmp() {
        var bmp=BitmapData.loadBitmap("pic");
        var pic:DistortBitmap=InstanceManager.createMC(this,DistortBitmap,bmp,5,3);
        var distortPointsArr:Array=[];
        distortPointsArr.push(new Point(128,52));
        distortPointsArr.push(new Point(38,48));
        distortPointsArr.push(new Point(38,176));
        distortPointsArr.push(new Point(128,162));
        pic.distort(distortPointsArr);
}

При нажатии кнопки - удалить Linkage, что бы можно было его присвоить следующей картинки

Помогите плиз. Уже почти неделю мочаюсь то с одним, то с другим. Учусь потихоньку.

iNils 11.02.2008 04:40

Linkage можно присвоить ТОЛЬКО объекту в библиотеке fla, в swf это невозможно.

Однако для вашей задачи нужно совсем другое. А именно:
1. Загрузить картинку в мувиклип.
2. Создать пустой объект BitmapData под размеры картинки
3. Снять изображение из мувилипа в BitmapData с помощью метода draw ().
4. Удалить загрузочный мувиклип.

qwr 11.02.2008 05:53

Вложений: 1
Что то неполучается... Что я неправильно делаю?

Код:

import com.silin.InstanceManager;
import com.silin.DistortBitmap;
import flash.display.BitmapData;
import flash.geom.*;

r = 0;

function DistBmp() {
        var bmp = BitmapData.loadBitmap("newbmp");
        var pic:DistortBitmap = InstanceManager.createMC(this, DistortBitmap, bmp, 5, 3);
        var distortPointsArr:Array = [];
        distortPointsArr.push(new Point(128, 52));
        distortPointsArr.push(new Point(38, 48));
        distortPointsArr.push(new Point(38, 176));
        distortPointsArr.push(new Point(128, 162));
        pic.distort(distortPointsArr);
}

if (r == 0) {
        var my_mcl:MovieClipLoader = new MovieClipLoader();
        var my_obj:Object = new Object();
        my_mcl.loadClip("pic1.jpg",clip);
        my_obj.onLoadProgress = function(clip, bytesLoaded, totalBytes) {
                progres_tf.text = Math.round(bytesLoaded/totalBytes*100)+"%";
        };
        my_obj.onLoadComplete = function(clip) {
                newbmp = new BitmapData(200, 196, true, 0x0);
                newbmp.draw(clip);
                DistBmp();
                delete my_obj;
                delete my_mcl;
        };
        my_mcl.addListener(my_obj);
}

Исходник: Вложение 18849

udaaff 11.02.2008 06:10

попробуйте так:
Код:

var pic:DistortBitmap = InstanceManager.createMC(this, DistortBitmap, newbmp, 5, 3);
upd: и onLoadComplete() на onLoadInit() заменить

qwr 11.02.2008 06:17

Спасибо огроменное! Вы гении! Все заработало!

qwr 11.02.2008 07:30

Есть еще наверное ошибка тут...

Столкнулся с еще одной проблеммой - При каждом вызове этого кода все больше и больше пожирается системных ресурсов.
Раз 20 кликнул на кнопочку и комп уже висит...

Подскажите, где ошибка. Видимо что то загружается и не удаляется. Остается в памяти...

Molecula 11.02.2008 11:02

Хм, может dispose() поможет.

qwr 11.02.2008 16:10

Не помогает.

Вот какой у меня в итоге код:

Код:

import com.silin.InstanceManager;
import com.silin.DistortBitmap;
import flash.display.BitmapData;
import flash.geom.*;

r = 1;

function slideshow() {
        i = "pic"+r+".jpg";
        function DistBmp() {
                var bmp = BitmapData.loadBitmap("newbmp");
                var pic:DistortBitmap = InstanceManager.createMC(this, DistortBitmap, newbmp, 5, 3);
                var distortPointsArr:Array = [];
                distortPointsArr.push(new Point(560, 90));
                distortPointsArr.push(new Point(160, 100));
                distortPointsArr.push(new Point(160, 480));
                distortPointsArr.push(new Point(560, 410));
                pic.distort(distortPointsArr);
        }

        var my_mcl:MovieClipLoader = new MovieClipLoader();
        var my_obj:Object = new Object();
        my_mcl.loadClip(i,clip);
        my_obj.onLoadProgress = function(clip, bytesLoaded, totalBytes) {
                progres_tf.text = Math.round(bytesLoaded/totalBytes*100)+"%";
        };
        my_obj.onLoadInit = function(clip) {
                newbmp.dispose();
                newbmp = new BitmapData(200, 196, true, 0x0);
                newbmp.draw(clip);
                DistBmp();
                delete my_obj;
                delete my_mcl;
        };
        my_mcl.addListener(my_obj);
}

if (r == 1) {
        slideshow();
}

Подскажите, где ошибка.

qwr 11.02.2008 19:21

Помогите пожалуйста! Если бы я сам мог разобратся - я бы не спрашивал...

Я залил полный исходник сюда: исходник (10 Мб)

саму флэшку, что бы поглядеть характер тормозов, можно глянуть тут. (400 кб) Через несколько раз нажатий на кнопку next или back становится заметно, как мувик начинает тормозить. Кинолента начинает двигатся рывками. И т.п.

iNils 12.02.2008 05:35

При каждом шаге, createMC создает новый мувиклип с картинкой, не удаляя старый.


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

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