Flex入门推荐教程: http://wenku.baidu.com/view/98ee93fbaef8941ea76e05ef.html
虽然是基于Flash Builder 2讲的,基本上跟flex没有区别,何况它是从flex的基本用法讲起的。
特点:概念清晰,详略得当。
Flex跨域问题与swf中是一样的,最佳解决方法就是代理了。php本地代理:
<?php
$ver = "1.0.0";
$copy="";
if(!isset($_GET['address']) || !$_GET['address']){
die("
nsT web proxy $ver
PHP Web proxy :: nst.e-nex.com
Address:
Example: www.yourdomain.com/path/proxy.php?address=http://www.baidu.com or
www.yourdomain.com/path/proxy.php?address=blogs.adobe.com/mchotin/feed
\n
$copy
");
}else{
$address = $_GET['address'];
$php_self= $_SERVER['PHP_SELF'];
$total ="";
$offset=0;
$info ="";
# v1.1 #
$x=$address;
$c=strlen($x);
if($x{0}.$x{1}.$x{2}.$x{3}.$x{4}.$x{5}.$x{6}=="http://"){
for($i=7; $i < $c; $i++){
$total.=$x{$i};
}
$address=$total;
}
# end of v1.1 #
$get_add = explode("/",$address,2);
if($_GET['address']){
$fp = @fsockopen($get_add[0], 80);
if(count($get_add)<2){ array_push($get_add,"");}
$out = "GET /$get_add[1] HTTP/1.0\r\n";
$out .= "Host: $get_add[0]\r\n";
$out .= "\r\n";
$out .= "Connection: Close\r\n\r\n";
for(fwrite($fp, $out);trim(fgets($fp)););
while (!feof($fp)) {
$info.=fgets($fp, 128);
}
fclose($fp);
$script_url=$php_self;
$web=$info;
preg_match_all("#\s(href|src|action|codebase|url)=([\"\'])?(.*?)([\"\'])?([\s\>])#i", $web, $matches, PREG_SET_ORDER);
foreach ($matches as $match)
{
$uri = trim($match[3]);
$fragment = ($hash_pos = strpos($uri, '#') !== false) ? '#' . substr($uri, $hash_pos) : '';
$addr=parse_url("http://".$address."/");
$path=pathinfo($addr['path']);
$path=$path['dirname'];
$path=str_replace("\\","",$path);
if(!eregi("$address",$uri) and !eregi("http://",$uri)){$uri="http://".$addr['host']."/$path/$uri";}
if(substr_count($uri, "http://".$addr['host']."/")>1){$uri=str_replace("http://".$addr['host']."/","",$uri); $uri="http://".$addr['host']."/$uri";}
$url=$uri;
$c=strlen($url);
for($i=0; $i<$c; $i++){
$cp=substr($url, $i, $i+1);
if(substr($url,$i-2,2)=="//" and substr($url,$i-3,3)!="://"){
$url=substr_replace($url, '', $i-2, 1);
}
}
$uri=$url;
$replace = ' ' . $match[1] . '=' . $match[2] . $script_url . '?address=' . $uri . $fragment . $match[4] . $match[5];
$web = str_replace($match[0], $replace, $web);
}
print $web;
} #end of go
}
?>
Flex例子:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="feedRequest.send();">
<mx:Script>
<![CDATA[
private function clear():void
{
my_text_input_1.text="clear it!";
}
]]></mx:Script>
<mx:HTTPService id="feedRequest" url="http://localhost/proxy.php?address=blogs.adobe.com/mchotin/feed" useProxy="False" />
<mx:Label text="Hello World" />
<mx:TextInput id="my_text_input_1" width="100" text="{feedRequest.lastResult.rss.channel.title}" />
<mx:Button id="my_clear_button_1" label="clear" click="clear();" />
</mx:Application>
编译方法:
D:\http_root\code>mxmlc control.mxml Loading configuration file C:\Program Files\flex4sdk\frameworks\flex-config.xml D:\http_root\code\control.swf (314271 bytes)
D:\http_root\code>