2012-08-23 27 views
5

Tôi sử dụng chức năng bên dưới để tạo mã để hiển thị đối tượng flash. Kích thước flash ban đầu là 320x240, nhưng tôi muốn hiển thị nó là 200x150, vì vậy tôi sử dụng chức năng với thông số chiều rộng 200, chiều cao 150. Tất cả các trình duyệt đều hoạt động chính xác nhưng chrome thì không. Nó cho thấy nó là 200x151 (kiểm tra mã hiển thị với kích thước 200x151). Tại sao?Quy mô Chrome flash không chính xác

function getFlashCode(params) 
{ 
    debug('getFlashCode'); 
    var defaultParams = {movie: '', flashvars: {}, width:'', height: ''}; 
    for (var key in defaultParams) 
    { 
     if (params[key] === undefined) 
     params[key] = defaultParams[key]; 
    } 

    var flashvars = ''; 
    for (var key in params.flashvars) 
     flashvars += encodeURIComponent(key) + '=' + encodeURIComponent(params.flashvars[key]) + '&'; 

    var id = "fl" + Math.random(); 
    var code=""; 
     code += "   <object classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" width=\"" + params.width + "\" height=\"" + params.height + "\" align=\"middle\" id=\"" + id + "\">"; 
     code += "    <param name=\"movie\" value=\"" + params.movie + "\" \/>"; 
     code += "    <param name=\"quality\" value=\"high\" \/>"; 
     code += "    <param name=\"play\" value=\"true\" \/>"; 
     code += "    <param name=\"loop\" value=\"true\" \/>"; 
     code += "    <param name=\"wmode\" value=\"transparent\" \/>"; 
     code += "    <param name=\"scale\" value=\"showall\" \/>"; 
     code += "    <param name=\"menu\" value=\"true\" \/>"; 
     code += "    <param name=\"devicefont\" value=\"false\" \/>"; 
     code += "    <param name=\"salign\" value=\"\" \/>"; 
     code += "    <param name=\"allowScriptAccess\" value=\"always\" \/>"; 
     code += "    <param name=\"flashvars\" value=\"" + flashvars + "\" \/>"; 
     code += "    <!--[if !IE]>-->"; 
     code += "    <object type=\"application\/x-shockwave-flash\" flashvars=\""+ flashvars + "\" data=\"" + params.movie + "\" width=\"" + params.width + "\" height=\"" + params.height + "\">"; 

     code += "     <param name=\"movie\" value=\"" + params.movie + "\" \/>"; 
     code += "     <param name=\"quality\" value=\"high\" \/>"; 
     code += "     <param name=\"play\" value=\"true\" \/>"; 
     code += "     <param name=\"loop\" value=\"true\" \/>"; 
     code += "     <param name=\"wmode\" value=\"transparent\" \/>"; 
     code += "     <param name=\"scale\" value=\"showall\" \/>"; 
     code += "     <param name=\"menu\" value=\"true\" \/>"; 
     code += "     <param name=\"devicefont\" value=\"false\" \/>"; 
     code += "     <param name=\"salign\" value=\"\" \/>"; 
     code += "     <param name=\"allowScriptAccess\" value=\"always\" \/>"; 
     code += "     <param name=\"flashvars\" value=\"" + flashvars + "\" \/>"; 
     code += "    <\/object>"; 
     code += "    <!--<![endif]-->"; 
     code += "   <\/object>"; 
    return code; 
} 
+3

BTW bạn có thể sử dụng SWFObject tốt hơn khi nhúng tệp flash của mình. Đó là linh hoạt và chăm sóc khả năng tương thích trình duyệt tốt. – Kos

+3

Tôi đã nhận thấy sự kỳ lạ ngày càng nhiều hơn với Flash và Chrome giờ đây Pepper Flash là plugin Flash mặc định cho Chrome. Tôi tự hỏi nếu đây là một trường hợp khác? Có thể bạn đã cài đặt một số plugin Flash cho Chrome, bạn có thể tắt Pepper Flash và thử sử dụng plugin ít lỗi hơn bằng cách truy cập vào đây: chrome: // plugins –

Trả lời

1

Điều đầu tiên, mã đó không thể đọc được và bạn đang gặp một số sự cố khi đi đường. Như Kos đã nói, tôi khuyên bạn nên sử dụng swfobject để nhúng tệp Flash của bạn, vì nó xử lý tất cả sự kỳ lạ của trình duyệt. Ngoài ra, hầu hết các thông số của bạn không cần thiết vì các giá trị mặc định của chúng đã được chỉ định. Đây sẽ là cách được đề nghị của tôi để thực hiện:

<script type="text/javascript" src="swfobject.js"></script> 
<script type="text/javascript"> 
var flashvars = {}; 
var params = {}; 
var attributes = {}; 

swfobject.embedSWF("filename.swf", "div-id-here", "200", "150", "9.0.0","expressInstall.swf", flashvars, params, attributes); 
</script> 

Sau đó, bạn chỉ cần thêm phần tử div có id mà bạn chỉ định và đặt trong mã javascript và bạn đã hoàn tất. Tôi cũng phải đề cập đến một vấn đề tôi thấy ngay: tỷ lệ chiều rộng/chiều cao từ 300/240 là 1,25 và tỷ lệ 200/150 là 1,333, có nghĩa là trừ khi flash được thực hiện để mở rộng và thay đổi các yếu tố xung quanh tùy thuộc về kích thước, bạn sẽ có đường viền trên phim Flash của mình để giữ tỷ lệ theo cách của nó, trừ khi bạn thay đổi chế độ tỷ lệ (trong đó showall không phải là một trong các tùy chọn tiềm năng).

Tôi không biết làm thế nào flash được lập trình hoặc những gì bạn đang cố gắng làm chính xác, nhưng tôi sẽ để nó cho bạn để thử những điều trên và đọc params documentation on Adobe's site.

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