AS3 — чертежи выходят за рамки диапазона

В настоящее время я испытываю проблему с AS3.

Я пытался нарисовать очень длинное изображение, размер которого превышает диапазон сцены. Проблема в том, что часть, выходящая за пределы сцены, все равно будет отрисована, поэтому, когда я тестирую свою программу с помощью flash или на веб-странице, результат выглядит не очень хорошо.

Я установил размер рабочей области 960 на 640, но части, выходящие за пределы 960 и 640 (или даже x‹ 0 y‹0 ), все еще рисуются.

Есть ли способ скрыть части, выходящие за пределы диапазона, и рисовать только те элементы, которые находятся в диапазоне предопределенного этапа?

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

Кстати, я использую FlashDevelop.

Большое спасибо.


person Melwell    schedule 12.01.2014    source источник
comment
Хм. Еще в эпоху ActionScript 1 люди рисовали (размещали) объекты за пределами видимой части сцены, и окно браузера Flash не портило веб-страницу. Я говорю, не беспокойтесь, но правильно назначьте размеры сцены на веб-странице для публикации.   -  person Vesper    schedule 12.01.2014
comment
Вы просматриваете это, встроенное в html-файл? Это не должно быть проблемой, если вы.   -  person bandaro    schedule 14.01.2014


Ответы (1)


Это во многом зависит от того, используете ли вы подход, основанный только на коде, или используете IDE.

Подход IDE. В Flash Professional создайте новый слой на временной шкале рабочей области. Поместите прямоугольник точно такого же размера, как сцена в этом слое. Теперь щелкните правой кнопкой мыши слой и выберите «Маска». Заблокируйте слой.

Теперь убедитесь, что все остальные слои на временной шкале сцены расположены под этой маской. Перетащите слой чуть ниже маски, чтобы он появился в списке под маской с небольшим отступом.

Подход к коду: (Код из Как создавать маски в AS3?. Приветствую Саппи и Небу для кода.)

var maskShape:Shape = new Shape();
maskShape.graphics.beginFill(0x0);
maskShape.graphics.drawRect(0, 0, 960, 640);
maskShape.graphics.endFill();
addChild(maskShape);
maskShape.x = 0;
maskShape.y = 0;

thingToMask.mask = maskShape;
maskShape.visible = false;
person CodeMouse92    schedule 12.01.2014
comment
Большое спасибо!! Это решение (подход к коду) просто решило мою проблему. - person Melwell; 14.01.2014