2012-02-28 3 views
0

Я работаю над проектом AS3, в котором элемент должен расширяться (вниз) при наведении указателя мыши. Проблема в том, что я не могу понять, как расширить элемент без автоматического масштабирования 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-мышления (думаю, «box-model»), поэтому я думаю, что это вызывает у меня проблемы.

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

ответ

1

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

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

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), вы можете почти забыть о настройке ширины/высоты.

+0

Удивительный! Большое спасибо, это был идеальный старт. Я также обнаружил, что (после того, как вы добавите маску в список отображения), вы можете настроить ее высоту - именно тот эффект, который я искал! –

1

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

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

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