اكتشاف ما إذا كان مسموحًا بملء الشاشة في ActionScript 3.0؟

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

سؤال

أرغب في إزالة زر ملء الشاشة إذا كانت المعلمة المسموح بها لملء الشاشة خاطئة.
      param value="true" name="allowfullscreen"

هل يعرف أحد ما إذا كان من الممكن اكتشاف هذه القيمة؟ولا يأتي مع فلاشفارس أخرى على LoaderInfo.parameters.

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

المحلول

يحرر:لقد أصبح هذا قديمًا الآن (كان بمثابة اختراق لـ FP 8.5 / 9)

سيكتشف ما يلي ما إذا كان المشغل لديك متاحًا بملء الشاشة (thx @mrdoob):

var hasFullscreen:Boolean = (stage.hasOwnProperty("displayState"))

نصائح أخرى

وعضو تريده هو

stage.displayState

ويمكن أن تسند مثل ذلك:

import flash.display.StageDisplayState;

....

stage.displayState = StageDisplayState.FULL_SCREEN;
stage.displayState = StageDisplayState.NORMAL;

وأوصي القراءة:

<وأ href = "http://livedocs.adobe.com/flash/9.0/main/wwhelp/wwhimpl/common/html/wwhelp.htm؟context=LiveDocs_Parts&file=00000352.html" يختلط = "نوفولو noreferrer" > http://livedocs.adobe.com/flash/9.0/main/wwhelp/wwhimpl/common/html/wwhelp.htm؟context=LiveDocs_Parts&file=00000352.html

[تحرير:

ويا رجل، أخطأت تماما سؤالك.]

وبعد قليل اختبار يبدو يمكنك فقط استخدام آلية استثناء لاختبار من دون أي بارقة perceptable:

try
{
    stage.displayState = StageDisplayState.FULL_SCREEN;
    stage.displayState = StageDisplayState.NORMAL;
} catch ( error:SecurityError ) {
// your hide button code            
}

وSOLUTION FOR AS3

ويمكنك معرفة ما اذا كان يسمح كامل الشاشة من خلال خصائص المرحلة، مثال لحالتي

try {
    if (btn.stage["allowsFullScreen"]) { // if this fails, then its not allowed
        // do full screen allow code here
        btn.alpha = 1; // show since its allowed
    }
} catch (error:Error) { // full scrren not allowed
    btn.alpha = 0.5; // dim since it cant be used
}

وأنت لا يمكن الكشف عن إذا كان لديه تضمين allowfullscreen إلى false / صحيح.

ولسوء الحظ سوف تحتاج إلى الانتظار حتى يقوم المستخدم بالنقر على زر للقبض على خطأ في نهاية المطاف، وبالتالي تعطيل زر.

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

والواقع مستندات غير واضحة لكيفية وضع ملء الشاشة أن يسمح أو لا يمكن الكشف عنها في أكشن 3.

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

وربما تكون هناك وسيلة، ولكن "livedocs" غير مكتملة أو موجز المعروف.

<الإضراب> هل يمكن أن يكون قادرا على قراءة القيمة "ملء الشاشة" المعلمة والتي الافتراضي كاذبة من خلال النظر في معلمتين الكائن الجذر مع:

<الإضراب>
var keyStr:String;
var valueStr:String;
var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters;
for (keyStr in paramObj) {
valueStr = String(paramObj[keyStr]);
//do something with this information
}

<الإضراب> تحرير: لاحظت لكم انه لا يأتي مرة أخرى في ب flashVars

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

وبخلاف ذلك، حل يوثام ويبدو طيب، وبصرف النظر عن حقيقة أن stage.displayState = StageDisplayState.FULL_SCREEN; يمكن تشغيلها إلا من خلال الحدث المستخدم.

<اقتباس فقرة>   يبدأ

ووضع ملء الشاشة ردا على زر الماوس أو اضغط على مفتاح من قبل المستخدم. الفيلم لا يمكن تغيير Stage.displayState دون إدخال المستخدم. ( http://help.adobe.com /en_US/AS3LCR/Flash_10.0/flash/display/Stage.html#displayState )

يجب أن يكون لديك الزر الثاني الذي عند الضغط عليه، ويدير كود يوثام و. كنت اذهب لزر تسجيل الدخول أو أي زر آخر فإن المستخدم اضغط على أي حال.

للأسف، لا يعمل منصب المذكورة أعلاه. A فرنك سويسري مع:

package {
    import flash.display.Sprite;
    import flash.display.StageDisplayState;
    import flash.events.Event;
    import flash.events.MouseEvent;

    public class Tester extends Sprite {
        public function Tester() {
            trace("Display States: Full="+StageDisplayState.FULL_SCREEN+"; Normal="+StageDisplayState.NORMAL);
            trace( "- Display State? "+stage.displayState);
            trace( "- Full Screen Enabled? "+(stage.hasOwnProperty("displayState")) );
            stage.addEventListener( MouseEvent.CLICK, function(evt:Event=null):void {
                trace("Attempting to change to FullScreen...");
                try {
                    stage.displayState = StageDisplayState.FULL_SCREEN;
                    trace("Success!");
                    stage.displayState = StageDisplayState.NORMAL;
                } catch(e:*) {
                    trace("Fail! "+e);
                }
            });
        }

    }
}

هل تتبع عند تعطيل ملء الشاشة:

Display States: Full=fullScreen; Normal=normal
- Display State? normal
- Full Screen Enabled? true
Attempting to change to FullScreen...
Fail! SecurityError: Error #2152: Full screen mode is not allowed.

والمشكلة كونها جزءا Full Screen Enabled? true.

وأعتقد أننا يمكن أن تحقق هذه القدرة مع المحاولة للاستماع إلى

_root.stage.addEventListener(FullScreenEvent.FULL_SCREEN, onFullScreenListenter);

ومن اختباري في محاولة للسماح لوضع ملء الشاشة في ضيق المضيف مجموعة أمنية، فإنه سيعود استثناء فارغة. أعتقد أنه من FullScreenEvent لا وجود لها.

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