Отключить автомасштабирование в AS3 - PullRequest
0 голосов
/ 28 февраля 2012

Я работаю над проектом AS3, в котором элемент должен расширяться (вниз) при наведении. Проблема в том, что я не могу понять, как расширить элемент без автоматического масштабирования всего его содержимого в AS3.

Например (this - это Sprite):

private function expand(event:Event):void {
  TweenLite.killTweensOf(this);
  TweenLite.to(this, .2, {
    height: _dimensions.tall_height
  });
  return;
}

Будет автоматически расти все дочерние элементы this для заполнения доступного пространства. Я хочу отключить эту функцию, оставив ранее видимый контент на месте, чтобы я мог раскрывать дополнительный контент с новым пространством. Игра с scaleY в операторе TweenLite, похоже, ничего не делает.

Для меня не имеет никакого смысла, почему это поведение по умолчанию, но я исходил из мышления макета HTML (думаю, "модель коробки"), поэтому я думаю, что у меня возникают проблемы.

Возможно, у меня полностью неверная идея - есть ли более подходящий для AS3 метод «расширения» this для раскрытия дополнительного контента?

Ответы [ 2 ]

1 голос
/ 29 февраля 2012

ОК, поэтому вы не можете «отключить» масштабирование во Flash. Если вы хотите показать только часть объекта, вам придется использовать так называемую маску.

Предположим, у вас есть объект box (Sprite), и вы хотите показать только верхние 200 пикселей этого объекта:

var m:Sprite = new Sprite();

var g:Graphics = m.graphics;
g.beginFill(0);
g.drawRect(0, 0, box.width, 200);
g.endFill();

// Apply mask
box.mask = m;

Теперь позже, когда вы захотите раскрыть весь объект, вы можете просто перерисовать маску:

var m:Sprite = Sprite(box.mask);

// Redraw mask, now 400px
var g:Graphics = m.graphics;
g.beginFill(0);
g.drawRect(0, 0, box.width, 400);
g.endFill();

// Reapply mask
box.mask = m;

и т. Д.

Если вы работаете с проектом AS3 (не Flex), вы можете забыть о настройке ширины / высоты.

1 голос
/ 28 февраля 2012

Вместо того, чтобы расширять сам Sprite, разверните его фоновые элементы, которые, как мы надеемся, включили бы масштабирование с 9 срезами.

Похоже, что вы также используете маску, чтобы скрыть этот дополнительный контент.Вы можете просто изменить высоту маски.

...