首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Php ming:如何在Flash/Flex中加载和访问明创建的swf中的资产?

Php ming:如何在Flash/Flex中加载和访问明创建的swf中的资产?
EN

Stack Overflow用户
提问于 2009-10-27 23:02:29
回答 2查看 1.3K关注 0票数 1

我正在使用Ming创建一个库swf,使用下面的第一个代码示例。如何从我的Flex应用程序访问嵌入式png?下面是php/ming代码:

代码语言:javascript
复制
<?php
// Ming to create Library.swf
//-----------------------------------
// Create background...
Ming_setScale(20.0000000);
$movie = new SWFMovie();
ming_useswfversion(7);
$movie->setDimension(550,400);
$movie->setBackground(200, 200, 200);

// Load png file...
$img_file = "src/assets/page0.png";
$png = new SWFBitmap(fopen($img_file, "rb"));

// Add png to movie...
$movie->add($png);

// Export png
$movie->addExport($png, 'png');
$movie->writeExports();

// Save movie to swf
$swfname = dirname(__FILE__);
$swfname .= "/bin-debug/Library.swf";
$movie->save($swfname, 9);

?>

这是我的flex文章:

代码语言:javascript
复制
// Loading Library.swf (works), trying to access png asset (doesn't work)    
private var loader:Loader = new Loader();
private function onCreationComplete():void {
 loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
 loader.load(new URLRequest('Library.swf'));
}
private function onComplete(e:Event):void {
 var resourceClass:Class = loader.contentLoaderInfo.applicationDomain.getDefinition("png") as Class;
}

我不确定是否正确导出了png。使用SwfUtils代码测试Library.swf (swfutils.riaforge.org)根本不会显示任何导出的类。或者可能是其他地方出了问题?

EN

回答 2

Stack Overflow用户

发布于 2009-12-23 15:41:23

我也有同样的问题,我用flex ming创建了一个库,并试图从访问它,但不起作用。

我之所以使用它,只是因为我需要某个url使用Loader类来检索class对象,例如,我可以用它来设置画布的backgroundImage

但是我认为由ming my导出的flex的版本比编译的swf版本要低,而且不幸的是它不能识别嵌入的类名。

票数 0
EN

Stack Overflow用户

发布于 2011-02-27 02:46:13

您需要在代码中使用assignSymbol函数。

代码语言:javascript
复制
#!/usr/bin/ruby
require 'ming/ming'
include Ming
use_SWF_version(9)
set_scale(20.00000000)
@m = SWFMovie.new
@m.set_dimension(640, 480)
@bm = SWFBitmap.new("./common/MatrixFilter.jpg")
@m.add(@bm)

@text = SWFText.new
@font = SWFFont.new("./common/test.ttf")

@text.set_font(@font)
@text.set_color(0, 0, 0, 0xff)
@text.set_height(20)
@text.move_to(100, 100)
@text.add_string( "The quick brown fox jumps over the lazy dog. 1234567890")
@i1 = @m.add(@text)
@i1.set_depth(1)
@m.next_frame

@m.assign_symbol(@text, "mytext")
@m.assign_symbol(@bm,"mybitmap")
@m.save("assignSymbol.swf")

然后在Flex中使用类似这样的东西:(FlashDevelop项目)

代码语言:javascript
复制
package 
{
    import flash.display.MovieClip;
    import flash.display.Sprite;
    import flash.display.Bitmap;
    import flash.events.Event;

    /**
     * ...
     * @author DefaultUser (Tools -> Custom Arguments...)
     */

    public class Main extends Sprite 
    {
        [Embed(source="my_clip.swf", symbol="circle")]
        private static var Circle:Class;

        [Embed(source="App.swf", symbol="star")]
        private static var Star:Class;

        [Embed(source="App.swf", symbol="square")]
        private static var Square:Class;        

        [Embed(source = 'assignSymbol.swf', symbol = 'mytext')]
        private static var Mytext:Class;

        [Embed(source='assignSymbol.swf', symbol='mybitmap')]       
        private static var Mybitmap:Class;      

        public function Main():void 
        {
            if (stage) init();
            else addEventListener(Event.ADDED_TO_STAGE, init);
        }

        private function init(e:Event = null):void 
        {
            var circle:Sprite = new Circle();
            addChild(circle);
            circle.x = 100;
            circle.y = 100;

            var star:Sprite = new Star();
            addChild(star);
            star.x = 200;
            star.y = 100;

            var square:Sprite = new Square();
            addChild(square);
            square.x = 300;
            square.y = 100; 

            var mybitmap:Bitmap = new Mybitmap();
            addChild(mybitmap);
            mybitmap.x = 300;
            mybitmap.y = 300;               

            var mytext:Sprite = new Mytext();
            addChild(mytext);
            mytext.x = 0;
            mytext.y = 200;
            removeEventListener(Event.ADDED_TO_STAGE, init);
            // entry point
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1631416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档