هل يمكنني الحصول على مقياس ملء الشاشة القديم باستخدام FLVPlayback وflash 9.0.115+؟

StackOverflow https://stackoverflow.com/questions/102059

سؤال

مع الإصدارات السابقة من الفلاش، أدى الدخول إلى وضع ملء الشاشة إلى زيادة ارتفاع وعرض المسرح إلى أبعاد الشاشة.الآن بعد أن تم تغيير حجم الأجهزة، تم ضبط الارتفاع والعرض على أبعاد الفيديو (بالإضافة إلى الحدود إذا كانت نسبة العرض إلى الارتفاع مختلفة).

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

من الممكن للمستخدم إيقاف تشغيل تحجيم الأجهزة، ولكن كل ما يحققه هو إيقاف تشغيل الصقل.لا تزال الضوابط في مهب القبح.

هل هناك طريقة لاستعادة سلوك القياس القديم؟

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

المحلول 2

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

لإيقافه، يجب عليك إنشاء فئة فرعية من FLVPlayback تستخدم فئة فرعية من UIManager، وتجاوز الوظيفة التي تقوم بتعيين Stage.fullScreenSourceRect.على الجانب السلبي، تفقد قياس الأجهزة؛لكن على الجانب العلوي، لا يبدو أن لاعبك قد تم رسمه بواسطة طفل يبلغ من العمر ثلاث سنوات بأقلام التلوين.

CustomFLVPlayback.as:

import fl.video.*;
use namespace flvplayback_internal;

public class CustomFLVPlayback
{
    public function CustomFLVPlayback()
    {
        super();
        uiMgr = new CustomUIManager(this);
    }
}

CustomUIManager.as:

import fl.video.*;
import flash.display.StageDisplayState;

public class CustomUIManager
{
    public function CustomUIManager(vc:FLVPlayback)
    {
        super(vc);
    }

    public override function enterFullScreenDisplayState():void
    {
        if (!_fullScreen && _vc.stage != null)
        {
            try
            {
                 _vc.stage.displayState = StageDisplayState.FULL_SCREEN;
            } catch (se:SecurityError) {
            }
        }
    }
}

نضيف FLVPlayback إلى الفيلم الخاص بنا باستخدام actionscript، لذا علينا فقط الاستبدال

var myFLVPLayback:FLVPlayback = new FLVPlayback();

مع

var myFLVPLayback:CustomFLVPlayback = new CustomFLVPlayback();

لا أعرف ما إذا كانت هناك طريقة لإتاحة الفصل المخصص في مكتبة المكونات.

نصائح أخرى

إليك طريقة أخرى لحلها، وهي أبسط ويبدو أنها تعمل بشكل جيد بالنسبة لي.

myFLVPlayback.fullScreenTakeOver = false;

ال fullScreenTakeOver تم تقديم الخاصية في Flash Player 9 تحديث 3.المستندات كلها غامضة بعض الشيء، ولكن هناك المزيد من المعلومات هنا:

باستخدام FLVPlayback المكون مع تحديث Flash Player 9 3

stage.align     = StageAlign.TOP_LEFT; 
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.addEventListener(Event.RESIZE, onStageResize);

function onStageResize(event:Event):void {
    //do whatever you want to re-position your controls and scale the video
    // here's an example
    myFLVPlayback.width = stage.stageWidth;
    myFLVPlayback.height = stage.stageHeight - controls.height;
    controls.y = stage.stageHeight - controls.height;
}

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

البرنامج التعليمي لتحجيم 9 شرائح: http://www.sephiroth.it/tutorials/flashPHP/scale9/

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