AS3从PHP加载PNG

时间:2011-05-24 11:10:16

标签: php flash actionscript-3

我需要一些帮助才能将PNG文件从服务器加载到我的flash项目中。我想要做的是能够调用PHP页面并向其发送一个我可以做的变量。然后我想访问数据库并获取图像的路径,我也可以这样做。我不确定的是那时该做什么。 我需要发生的是PHP以某种方式将PNG返回闪存。我可以将PNG添加到php页面并以某种方式使用加载器吗?我一直在谷歌搜索,但大多数教程似乎得到了PNG。

由于 本

3 个答案:

答案 0 :(得分:4)

实际上很容易。 :)

<?php
    // do some mysql magic.
    // let's assume you get a filename back as $file_name;

    header('Content-type: image/png');
    readfile($file_name);

请注意,您可能还必须包含一些路径信息。不确定图像的存储位置,但如果图像位于/ var / www / public / images中,则需要将其添加到file_get_contents调用中。


补充:此外,如果您只想返回PNG的路径,您可以对PHP文件执行URLRequest,让它找出图像所在的位置,并返回一个URL。这更容易......我只是建议标准化数据交换协议,如XML或(甚至更好)JSON ......这样,如果你决定要打破Flash和浏览器技术,你的后端已经在等你。

<?php
    // do some mysql magic.
    // let's assume you get a filename back as $file_name;

    $retVal = array('pathname'=>$file_name);
    header('Content-type: application/json');
    echo json_encode($retVal);

答案 1 :(得分:2)

如果你可以将网址返回到flash那就足够了。

import flash.display.*;
 import flash.net.URLRequest;
 var rect:Shape = new Shape();
 rect.graphics.beginFill(0xFFFFFF);
 rect.graphics.drawRect(0, 0, 100, 100);
 rect.graphics.endFill();
 addChild(rect);
 var ldr:Loader = new Loader();
 ldr.mask = rect;
 var url:String = ""; //put the returned img url you got from the php here.
 var urlReq:URLRequest = new URLRequest(url);
 ldr.load(urlReq); //the loader will start loading the img
 addChild(ldr); //here you add the loader to stage. 

也许是一两毫秒,你什么也看不见。但是只要加载程序加载了img,你就会看到它。

您必须输入返回的img网址。所以不是返回img url的网页的网址。


如果你将上面的内容与John Green的答案结合起来 - PageSpike你可以使用我的代码,只要php页面是John Green中的那个 - PageSpike他的答案你传递而不是返回的img然后通过url到带有参数的php页面;

var url:String = "http://www.yoursite.com/getImage.php?imgParameter=image123";

因此,url现在是John Green脚本的链接 - PageSpike将返回图像。

答案 2 :(得分:1)

正如Jhon Green所说,它会起作用

http://www.yourserver.com/filesforflash/?file_id={id}
header('Content-type: image/png');
readfile($file_name);

但有时您可能还需要上面的网址即使您发送内容类型为image / png的标头也无法使用。对此的快速提示是,如果其ID

,则发送文件名本身
http://www.yourserver.com/filesforflash/{id}-filename.png

为此你可能需要使用mod-rewrite。