Просмотр полной версии : Копирование на сцену части мувиклипа
Эх.. очень не хотел создавать эту тему, т.к. сразу скажете про маски или про RTFM, но нигде на форуме не смог найти.
В библиотеке находится около 20 мувиков (в принципе не важно сколько). Как вытащить какую-то часть (прямоугольную) мувика на сцену? Мувики в библиотеке лежат векторные. Дальше, если пользователь увеличивает видимую часть сцены, то как вытащить увеличенную часть мувика из библиотеки? С использованием маски (при таскании сцены мышкой) появляются сильные тормоза, т.к. при увеличении слишком много контента остается за пределами видимой части мувика. Как тогда можно отрезать то, что находится за пределами видимой части? С BitmapData поигрался, но ничего хорошего не вышло (т.е. вообще ничего не вышло). Можете подсказать куда копать?
alekslitvinenk
04.07.2009, 21:38
Собственно, вариантов кроме BitmapData тут больше и нету :)
По частям аттачить мувик из библиотеки нельзя, маска у Вас тормозит.
Почему у Вас ничего хорошего не вышло с битмапдатой ?
<...>
Почему у Вас ничего хорошего не вышло с битмапдатой ?
Забыл поставить cacheAsBitmap = true.
Таскается теперь нормально, без тормозов (до определенного увеличения), а вот само увеличение (уменьшение) тормозит безбожно...
alekslitvinenk
05.07.2009, 15:38
вы бы кусок кода привели здесь: как вы делаете увеличение/уменьшение
вы бы кусок кода привели здесь: как вы делаете увеличение/уменьшение
Делаю банальным _xscale, _yscale:
var mc_map:MovieClip = this.createEmptyMovieClip("mc_map", this.getNextHighestDepth());
mc_map.attachMovie("un_zelen_mc", "un_zelen_mc_new", mc_map.getNextHighestDepth());
mc_map.attachMovie("un_brown_mc", "un_brown_mc_new", mc_map.getNextHighestDepth());
mc_map.attachMovie("zelen_mc", "zelen_mc_new", mc_map.getNextHighestDepth());
mc_map.attachMovie("kontur_zelen_mc", "kontur_zelen_mc_new", mc_map.getNextHighestDepth());
mc_map.attachMovie("grey_mc", "grey_mc_new", mc_map.getNextHighestDepth());
mc_map.attachMovie("kontur_grey_mc", "kontur_grey_mc_new", mc_map.getNextHighestDepth());
mc_map.attachMovie("kvartal_mc", "kvartal_mc_new", mc_map.getNextHighestDepth());
mc_map.attachMovie("kontur_mc", "kontur_mc_new", mc_map.getNextHighestDepth());
mc_map.attachMovie("reka_mc", "reka_mc_new", mc_map.getNextHighestDepth());
mc_map.attachMovie("kontur_reka_mc", "kontur_reka_mc_new", mc_map.getNextHighestDepth());
mc_map.attachMovie("doma_mc", "doma_mc_new", mc_map.getNextHighestDepth());
mc_map.attachMovie("kontur_doma_mc", "kontur_doma_mc_new", mc_map.getNextHighestDepth());
mc_map.cacheAsBitmap = true;
var mc_control:MovieClip = this.createEmptyMovieClip("mc_control", this.getNextHighestDepth());
mc_control.attachMovie("plus_btn", "plus_btn_sc", mc_control.getNextHighestDepth());
mc_control.attachMovie("minus_btn", "minus_btn_sc", mc_control.getNextHighestDepth());
mc_control.plus_btn_sc._x = 500;
mc_control.plus_btn_sc._y = 19;
mc_control.minus_btn_sc._x = 500;
mc_control.minus_btn_sc._y = 50;
mc_map.onMouseDown = function() {
startDrag(mc_map, false);
}
mc_map.onMouseUp = function() {
stopDrag();
}
var scale:Number = 1;
mc_control.plus_btn_sc.onPress = function() {
scale += 100;
}
mc_control.plus_btn_sc.onRelease = plus_btn_sc.onReleaseOutside = function() {
_root.mc_map._xscale = scale;
_root.mc_map._yscale = scale;
}
mc_control.minus_btn_sc.onPress = function() {
scale -= 100;
}
mc_control.minus_btn_sc.onRelease = minus_btn_sc.onReleaseOutside = function() {
_root.mc_map._xscale = scale;
_root.mc_map._yscale = scale;
}
Добавлено через 2 минуты
Плюс еще вопрос:
что быстрее масштабируется - один большой векторный рисунок или куча мелких векторных рисунков (если разбить большой на кучу маленьких) ?
Добавлено через 36 минут
То, что у меня получилось - http://ivedu.ru/sborka.swf
alekslitvinenk
05.07.2009, 18:16
при достаточно сильном увеличении имеет смысл вырезать только часть карты и двигать ее, вобще в подобных проектах имеет смысл использовать тайлы.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.