2009-03-18 59 views

Trả lời

-3

EDIT: Đây là lỗi thời bây giờ (là một hack cho FP 8,5/9)

Sau đây sẽ phát hiện nếu nghe nhạc của bạn có sẵn sàng toàn màn hình (thx @mrdoob):

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

Giải pháp này không hoạt động vì thuộc tính displayState luôn có sẵn, ngay cả khi allowFullScreen = false, được kiểm tra trong Flash 10.0. – sixones

+0

Tôi biết, như bạn có thể thấy điều này đã được đăng cách đây 2 năm trong khi vấn đề là phát hiện xem phiên bản trình phát có thực sự hỗ trợ tính năng này không ... kthx –

2

Các thành viên bạn muốn là

stage.displayState 

Nó có thể được gán như vậy:

import flash.display.StageDisplayState; 

.... 

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

tôi khuyên bạn nên đọc:

http://livedocs.adobe.com/flash/9.0/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00000352.html

[Edit:

Oh man, hoàn toàn hiểu sai câu hỏi của bạn]

Sau một thử nghiệm nhỏ có vẻ như bạn chỉ có thể sử dụng cơ chế ngoại lệ để kiểm tra nó mà không có bất kỳ nhấp nháy perceptable:.

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

Trên thực tế chạy trong trình duyệt, dưới các plugin flash player, bạn có thể không thậm chí làm mã này trừ khi nó được gắn với một sự kiện do người dùng khởi tạo như MouseEvent.CLICK. – dlamblin

+0

Đó chỉ là vấn đề thiết kế thông tin. Nó hầu như không ức chế quá trình thử nghiệm ở bất kỳ mức độ tuyệt vời nào. – Jotham

0

Trên thực tế các tài liệu không rõ ràng về cách chế độ toàn màn hình được cho phép hay không có thể được phát hiện trong ActionScript 3.

Điều duy nhất chúng đề cập là nếu bạn cố gắng chuyển sang chế độ toàn màn hình và không được phép, thì bạn sẽ nhận được ngoại lệ mà bạn có thể bắt được. Điều này sẽ không dễ dàng cho phép bạn ẩn hoặc hiển thị nút chế độ toàn màn hình.

Có thể có một cách, nhưng "livedocs" nổi tiếng là không đầy đủ hoặc ngắn gọn.

Bạn có thể có thể đọc giá trị param của "toàn màn hình" mà giá trị mặc định là false bằng cách nhìn vào paramters đối tượng gốc với:

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 
} 

Edit: bạn lưu ý rằng nó không trở lại trong flashvars.

+0

"Điều này sẽ không dễ dàng cho phép bạn ẩn hoặc hiển thị nút chế độ toàn màn hình" - tại sao không? Nếu bạn gặp một SecurityException trong khi chuyển sang chế độ toàn màn hình, nó không được phép. – bzlm

+0

Câu hỏi cho biết "Nó không đi kèm với các flashvars khác trên loaderInfo.parameters". – bzlm

+0

Logic. Nếu bạn không có ngoại lệ thì sao? Bây giờ bạn đang chuyển đổi chế độ TRƯỚC KHI bạn đã vẽ nút và trước khi bất kỳ ai nhấp vào nút đó. Ngoại trừ khóa học: mô hình bảo mật cho biết bạn không thể chỉ định stage.displayState trừ khi được bắt đầu bởi sự kiện của người dùng. Có, tôi đã bỏ lỡ chút flashvars khi chỉnh sửa nhiều hơn. – dlamblin

0

Bạn không thể phát hiện xem nhúng có đặt allowfullscreen thành false/true hay không.

Rất tiếc, bạn sẽ cần đợi cho đến khi người dùng nhấp vào nút để bắt lỗi cuối cùng và do đó vô hiệu hóa nút.

Vẫn ... Bạn phải ở trong một ngữ cảnh rất đặc biệt để yêu cầu trình phát flash tự đánh giá giá trị này là bạn có thể đã chỉnh sửa nó. Trong trường hợp việc nhúng được xử lý bởi bên thứ ba cần phải có khả năng quyết định xem chế độ toàn màn hình có được phép hay không. Nếu trường hợp này xảy ra, chỉ cần thêm flash-var phụ (ví dụ: fullscreenButton = false).

0

Phương pháp duy nhất tôi có thể nghĩ đến là gọi một hàm JavaScript qua ExternalInterface. Bạn có thể dễ dàng đọc các tham số nhúng flash từ JavaScript, nhưng tôi nghĩ rằng nếu bạn có thể chèn một JS vào HTML mà phim của bạn được nhúng, bạn sẽ thay đổi tham số thay vì cố gắng tìm hiểu nó là gì.

Ngoài ra, giải pháp của Jotham có vẻ ok, ngoài thực tế là stage.displayState = StageDisplayState.FULL_SCREEN; chỉ có thể được kích hoạt bởi sự kiện của người dùng.

Chế độ toàn màn hình được khởi xướng để phản hồi với lần nhấp chuột hoặc nhấn phím của người dùng; phim không thể thay đổi Stage.displayState mà không có đầu vào của người dùng. (http://help.adobe.com/en_US/AS3LCR/Flash_10.0/flash/display/Stage.html#displayState)

Bạn cần có nút thứ hai khi được nhấn, chạy mã của Jotham. Tôi sẽ tìm nút đăng nhập hoặc bất kỳ nút nào khác mà người dùng sẽ nhấn.

0

Đáng buồn , bài viết trên không hoạt động. Một swf với:

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); 
       } 
      }); 
     } 

    } 
} 

sẽ theo dõi khi FullScreen bị vô hiệu hóa:

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. 

Vấn đề là phần Full Screen Enabled? true.

-1

tôi tin rằng chúng tôi có thể kiểm tra khả năng này với cố gắng để lắng nghe những

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

Từ thử nghiệm của tôi cố gắng để cho phép chế độ toàn màn hình trong chặt chẽ chủ thiết lập an ninh, nó sẽ trở lại ngoại lệ null. Tôi đoán vì FullScreenEvent không tồn tại.

2

GIẢI PHÁP CHO AS3

bạn có thể kiểm tra xem toàn màn hình được phép thông qua các thuộc tính sân khấu, ví dụ cho trường hợp của tôi

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 
} 
+3

stage.allowsFullScreen được thêm vào 10.2 vì vậy điều này sẽ không hoạt động đối với người chơi cũ, nhưng đây là giải pháp tốt nhất mà tôi đã tìm thấy. Tôi sử dụng: stage.hasOwnProperty ("displayState") && stage.hasOwnProperty ("allowFullScreen") && stage ["allowFullScreen"] –

Các vấn đề liên quan