Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Подскажите пожалуйста, как это можно реализовать? (http://www.flasher.ru/forum/showthread.php?t=133378)

mr.oizo 03.12.2009 16:46

Подскажите пожалуйста, как это можно реализовать?
 
Есть такой проект - scribd.com, это онлайновый просмотрщик и хранилище документов любого формата. Сначала документ конвертится в pdf, потом с помощью swftools: pdf->swf. Эта свф-ка представляет собой movieclip с фреймами, в каждом из которых содержится одна страница из pdf. Потом этот мувик прогружается во вьювер и показывается в нескольких модах (book, scroll, slideshow)

Есть задача, реализовать режим scroll из этого вьювера (т.е режим как в adobe reader-е):

http://image-board.appspot.com/agtpb...SW1hZ2UYqY4CDA

Но оказывается, в классе MovieClip невозможно вырезать отдельные фреймы, чтобы в проследствии раскидать их по контейнерам в скролл-панели своего вьювера. И как к этой задаче подойти, я не знаю. Была мысль делать копии этого MovieClip-a и при добавлении в нужный контейнер перематывать до нужного кадра, однако когда будет 500 кадров в мувике (и соответственно нужно будет 500 контейнеров для страниц и 500 копий этого мувика), при весе его в 5 метров - это по-моему плохая идея.

Кто что может подсказать для решения этой задачи? Заранее спасибо.

iflamberg 03.12.2009 16:53

на экране-то умещаются только две-три страницы. Т.е. вам нужно всего две-три копии мувика.

mr.oizo 03.12.2009 17:09

А если делать функцию preview (tile-list с 16-25-36 кадрами) - как в scribd viewer? Как быть в этом случае, что посоветуете?

Jewelz 03.12.2009 17:22

отрисуйте тумбы с каждого кадра в BitmapData

mr.oizo 03.12.2009 17:28

2Jewelz: А не подскажете код, чет не соображу (еще почти новичек во флеше), как фрейм из мувика перегнать в BitmapData посредством as3?

Вот сижу, и не вижу в классе MovieClip ни одного подходящего для этой задачи метода...

xpymbl4 03.12.2009 17:31

BitmapData 500 раз? Вам не кажется это плохой идеей?

Добавлено через 5 минут
А вообще:
Код AS3:

mcForBitmap.gotoAndStop(499);
var jpgSource:BitmapData = new BitmapData (mcForBitmap.width, mcForBitmap.height);
jpgSource.draw(mcForBitmap);


iflamberg 03.12.2009 17:37

нормально все будет. только не в цикле, чтобы комп завис, а на enterFrame по, скажем, 50 битмап за раз. Вообще, опять же можно отрисовывать битмапы по мере надобности.

Автор, вам нужна функция BitmapData.draw();

mr.oizo 03.12.2009 17:40

Все понял, спасибо большое. Попробую.

Jewelz 03.12.2009 17:43

Цитата:

Сообщение от xpymbl4 (Сообщение 870075)
BitmapData 500 раз? Вам не кажется это плохой идеей?

вроде как человек хочет 16-25-36 страниц отобразить.. 500 сразу думаю никому не надо

+ не в полном размере делать, а именно тумбы, вобщем думаю так:

Код AS3:

private function getFrame(index:uint):Bitmap
                {                       
                        if ((index != 0) && (index <= mc.totalFrames))
                        {
                                mc.gotoAndStop(index);
 
                                var m:Matrix = new Matrix();
                                var size:Number = 0.2; // на сколько уменьшаем
                                m.scale(size, size);
 
                                var bmpd:BitmapData = new BitmapData(mc.width * size, mc.height * size);
                                bmpd.draw(mc, m, null, null, null, true);
 
                                return new Bitmap(bmpd, PixelSnapping.AUTO, true);
                        }else {
                                return null;
                        }
                }


CrazyFlasher 03.12.2009 17:49

с BitmapData у вас не прокатит сделать поиск и выделение по тексту ;-)

создавали что-то подобное (даже покруче scribda получилось :) )


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

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