2013-06-27 2 views
2

Возможно, я ошибаюсь, я изучаю Easeljs только на неделю.
Контейнер не имеет ширины и высоты, чтобы установить размер.Easeljs, рекомендуется ли устанавливать размер контейнера?

У меня есть 2 вопроса:
1. является размер контейнера, динамически меняющегося с ребенком.
2. Если вопрос 1 ответ да, могу ли я добавить в него большой растровый рисунок или форму, например. фоновое изображение ... и т. д. контролировать размер контейнера?

ответ

2

Рассмотрите контейнер как группу объектов, а не физический контейнер. Контейнеры дают вам возможность трансформировать, переводить, кэшировать и иным образом управлять несколькими элементами в виде одного элемента. На самом деле у них нет физического размера, кроме их коллективных детей.

Нет ширины или высоты, главным образом, из-за стоимости расчета размера, особенно учитывая преобразования, субконтейнеры и т. Д. В будущем может быть добавлена ​​поддержка ширины/высоты, но пока ее недоступно.

[ОБНОВЛЕНИЕ]: Контейнеры сделать имеют границы, основываясь на границах детей (извлекаемых с использованием container.getBounds() (docs), которые имеют границы, например, контейнер, который имеет Sprite, Bitmap, текст, объекты с вручную установленными пределами. или кэшированное DisplayObjects сообщит границам использования этих детей. Формы не имеет авто рассчитанной границы в настоящее время, так что не будет способствовать контейнерные границам.

+0

понимается. Я также согласен, он не имеет размера, но может свободно добавлять addchild. так что считайте, что группа объектов более разумна. Теперь в моем коде я больше не добавляю большое фоновое изображение. –

+0

На самом деле есть способ, пожалуйста, см. Мой ответ ниже. – supersan

+0

Обновлен мой ответ. @supersan верен: установка ограничений вручную на все, что не имеет автоматической привязки, заставит контейнеры учитывать эти границы в своем собственном расчете. – Lanny

1

Это очень плохо хака, но если вы абсолютно необходимы зафиксировать размер контейнера, вы можете использовать примерно следующее:

var blank = new createjs.Shape(); 
var width = 1; 
var height = 400; 
blank.setBounds(0, 0, width, height); 
container.addChild(blank); 

Это установит размер контейнера в пустое изображение, и теперь любой фон, который вы нарисовываете на нем, будет виден.

+1

Я бы не стал считать это взломом, и это точная причина, по которой на экранных объектах есть «setBounds». Иногда вы знаете, что такое нетрансформированные границы, поэтому вы можете их установить. Обновлен мой ответ выше. – Lanny

Смежные вопросы