2011-10-06 2 views
1

나는이 같은 PHP 코드를 사용하여 플렉스 4.5 모듈 (그것은 SWF 파일의)로드 해요 :동일한 요청으로 SWF와 일부 추가 데이터를로드하는 방법은 무엇입니까?

$module = 'modules/'.$_GET['module'].'.swf'; 

if(!file_exists($module)) { 

    $module = 'error.swf'; 

} 

$size = filesize($module); 
$contents = file_get_contents($module); 

header('Content-Type: application/x-shockwave-flash'); 
header('Accept-Ranges: bytes'); 
header('Content-Length: '.$size); 

echo $contents; 

을하고 아주 잘 작동합니다. 무언가 같이

가 지금은로드하고 하나 개의 요청 처리기에서 데이터와 모듈을 채우기 위해 몇 가지 추가 데이터를 얻을 싶어 : 나는 AMFPHP와 함께 일을하려고하지만, 한

private function requestHandler(response:???):void { 

    var data:Array = response as Array; 

    mySparkModuleLoader.load("", data[0] as ByteArray); 
    myController.load(data[1]); 

} 

들일 ByteArray이 보인다 깨지거나 뭔가가 표시되지 않기 때문에,하지만 데이터의 나머지는 괜찮 수 :

return array(
    'hello world!', 
    new Amfphp_Core_Amf_Types_ByteArray(file_get_contents($module)) 
); 

어쩌면 http://sun3.org/archives/107 같은 다중 응답을 만들고 그것을 처리?

어떤 아이디어라도 환영합니다.

답변

1

OMG IS WORKING!

나는이 다른 그래서 누군가에게 도움이 될 수 있기를 바랍니다 :

AMFPHP 2.0 RC1 서비스 :

private function resultHandler(event:ResultEvent):void { 

    var response:Array = event.result as Array; 

    moduleLoader.loadModule("http://some.random.url", response[0] as ByteArray); 
    initialData = response[1] as Array; 

} 

: 핸들러 (플렉스 SDK 4.5을 사용하여)

<?php 

class Services { 

    public function getModule() { 

     $path = dirname(__FILE__).'\..\..\Modules\Foo.swf'; 
     $ba = new Amfphp_Core_Amf_Types_ByteArray(file_get_contents($path)); 

     return array(
      $ba, 
      array(
       'colors' => array(
        'red', 
        'green', 
        'blue' 
       ), 
       'animals' => array(
        'dog', 
        'cat' 
       ) 
      ) 
     ); 

    } 

} 

서비스 그리고 그게 다야!

+0

하하, 공유해 주셔서 감사합니다. 이것은 내가 필요한 것입니다. 직접 ByteArray를 조작하는 방법을 알아 내려고 노력 중입니다. 내가 무엇인가를 변경하면 잘못된 패킷이 나옵니다. 나는 바이트 배열에서 어딘가에 추측하고있다 ... 나를 잡는 길이 ... zzz. –