سؤال

لدي كائن أقوم ببعض الرسم المخصص فيه، ولكنني أود أن تعرف الحاوية مكان وضع الكائن بشكل صحيح.للقيام بذلك، تحتاج الحاوية إلى معرفة حجم الكائن.تمر مكونات واجهة المستخدم بمرحلة قياس، لكن الكائنات لا تمر بذلك.كيف يمكنني حساب الحجم الذي سيكون عليه الكائن؟

يحرر: أنا أقوم بالرسم في Event.ENTER_FRAME، وهو متحرك، لذا لا أستطيع أن أعرف مسبقًا حجمه.يحتوي UIComponent على وظيفة قياس وأرغب في إنشاء شيء مشابه.

هل كانت مفيدة؟

المحلول

الإجابة الدقيقة، بقدر ما أستطيع جمعه، هي أنه لا يمكنك معرفة ذلك مسبقًا، بل يجب عليك بالفعل السحب إلى الكائن لتحديد حجمه.

نصائح أخرى

تأخذ العفاريت الحجم الذي ترسمه فيها.ليس له حجم على الإطلاق حتى ترسم شيئًا فيه.إذا كان تطبيقك يسمح لك برسم حد (ربما مستطيل) أولاً ثم قياس الكائن.لكن لا ترسم خارج الحدود لاحقًا.

أيضًا، اعتمادًا على ما ترسمه، قد تتمكن من استخدام الرياضيات لحساب الحجم النهائي مسبقًا.

أي.إذا كنت ترسم دائرة، فيمكنك استخدام الرياضيات لمعرفة الارتفاع/العرض النهائي.

مايك

ألقِ نظرة هنا - آمل أن يجيب هذا على سؤالك:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">

    <mx:Script>
        <![CDATA[

            import mx.core.UIComponent;

            private var s:Sprite;
            private var w:UIComponent;

            override protected function createChildren():void
            {           
                super.createChildren();

                if (!s)
                    s = getSprite();

                w = new UIComponent();

                trace("The sprite measures " + s.width + " by " + s.height + ".");

                w.addChild(s);
                box.addChild(w);
            }

            private function getSprite():Sprite
            {
                var s:Sprite = new Sprite();
                s.graphics.lineStyle(1, 0xFFFFFF);
                s.graphics.beginFill(0xFFFFFF, 1);
                s.graphics.drawRect(0, 0, Math.floor(Math.random() * 1000), Math.floor(Math.random() * 1000));
                s.graphics.endFill();

                return s;
            }

        ]]>
    </mx:Script>

    <mx:Box id="box" backgroundColor="#FFFFFF" />

</mx:Application>

إذا قمت بتشغيل هذا، فيجب أن تعرض عبارة التتبع ارتفاع وعرض الكائن المرسوم، والذي يتم إنشاؤه عشوائيًا.بمعنى آخر، يمكنك الحصول على ارتفاع وعرض الكائن ببساطة عن طريق الاستعلام عن خصائص الارتفاع والعرض.

إذا كنت بحاجة إلى تخطيط بعض المكونات الأخرى بناءً على عرض وارتفاع Sprite، ولكن قبل رسمها فعليًا، يمكنك الرسم على كائن flash.display.Shape، واستخدام هذا الحجم كمرجع، ثم إرفاق الشكل على Sprite.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top