Сценарий 3 действия - я должен знать, изменился ли дочерний объект, это - размер ДИНАМИЧНО!помощь?

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

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

Есть ли своего рода Событие для экранного объекта, который диспетчеризируется на КОМ-ЛИБО, отчасти изменяют размер??

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

1
задан mik 14 August 2010 в 19:21
поделиться

1 ответ

Что ж, вы можете решить эту проблему двумя способами: либо дочерний объект отправляет событие, когда его размер изменяется, либо вы продолжаете прослушивать любые изменения размера с помощью события EnterFrame, последнее ближе к вашему «грязному» решению :) лично Обычно я выбираю первое решение, но это не значит, что второе решение плохое, это вопрос выбора.

  • Существует ли какое-то событие для экранного объекта, которое отправляется при ЛЮБОМ виде изменения размера ??

Вы можете создать свое собственное.

package events
{
import flash.events.Event;

public class SizeEvent extends Event
{
    public static const CHANGE:String = "Size Changed";
    public var params:Object;
    public function SizeEvent(type:String, params:Object)
    {
        super(type);
        this.params = params;
    }

    override public function clone():Event
    {
        return new SizeEvent(type, params );
    }
}
}

Итак, когда вы добавляете свои элементы в галерею, вы пишете следующее:

  galleryItem.addEventListener(SizeEvent.CHANGE , sizeEventListener );

И когда анимация заканчивается в галерееItem

 private function onAnimationComplete():void
 {
    var params:Object = {x: this.x , y:this.y , width:this.width , 
                          height:this.height, //any info you need  etc... };

    dispatchEvent( new SizeEvent( SizeEvent.CHANGE , params ));
 }
2
ответ дан 2 September 2019 в 22:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: