问题之一:我将flash控件的对齐属性设为alClient,但flash影片并不随窗口的大小而改变,该怎么办?问题之二:我用Flash控件做的flash播放器,在打开一个flash影片之后,他的背景色就不随着影片发生变化了,如何处理?问题之三:当用户打开一个flash影片后,如何获知该影片的宽和高?问题之四:哪里有关于Flash.ocx的详细资料?

解决方案 »

  1.   

    我个人认为
    直接加载Flash为控件的方法
    不如在程序内使用WebBrowser,通过它过一手,呵呵~~``
      

  2.   

    ShockwaveFlash.SetZoomRect 设置缩放的区域
      

  3.   

    to ehom: 谢谢你。但是不行啊。setZoomRect()只是用来放大flash影片的一个区域。
      

  4.   

    将问题再提一次://///////////////////////////////////////////////////////////////问题之一:我将flash控件的对齐属性设为alClient,但flash影片并不随窗口的大小而改变,该怎么办?问题之二:我用Flash控件做的flash播放器,在打开一个flash影片之后再打开其他的影片,他的背景色就不随着影片发生变化了,如何处理?问题之三:当用户打开一个flash影片后,如何获知该影片的宽和高?问题之四:哪里有关于Flash.ocx的详细资料?
      

  5.   

    SetZoomRect(0,0,Parent.ClientWidth div 1440,Parent.ClientHeight div 1440);
      

  6.   

    谢谢 ehom。但是一样不行啊,你试过吗?
      

  7.   

    我来回答问题吧...
    1.比如你的播放控件名为SF
      那么当你在form的resize事件里加上下面两行代码
      
      其它任何一个控件.setfocus;
      sf.setFocus;2.每次在播放影片的时候设置一下
      SF.BGColor:='';
      也就是清除上一次播放的背景色3.
    解决第一个问题以后
    SF.owner.height
    SF.owner.width
    4.
    flash的主页有英文的...自己看吧
      

  8.   

    楼主在做flash播放器么?我做了一个只用了三天时间:)嘿嘿
      

  9.   

    我在做这个东东。欢迎大家试用。http://www.goomoo.net/ff/ff.htm
      

  10.   

    非常感谢 bluemeteor(挂月@渴望飞翔之驴@)  !!!!!!已经解决了两个问题。第三个问题是要得到swf文件本身的宽和高,而不是控件的宽和高。知道了swf文件的宽和高之后再来设置控件的大小。
      

  11.   

    sf.height
    sf.width
    不可以么?还有你的软件要注册号:((((
      

  12.   

    我的软件很实用的哦,他的价值远远大于一个flash播放器。注册是免费的。:)
      

  13.   

    "sf.height
    sf.width
    不可以么?"
    ----------------不行啊。这得到的只是控件的大小,而不是swf文件在制作是的大小。你看看Macromedia的Flash播放器,打开不同的swf文件,窗口的大小就不一样。
      

  14.   

    继续顶!!问题之三:当用户打开一个flash影片后,如何获知该影片的宽和高?
      

  15.   

    设置ScaleMode=3,则使用原始大小播放,如果使用SetZoomRect改变播放区大小,则可不受ScaleMode影响,除1440,是因为单位不同!with ShockwaveFlash do
    begin
      SetZoomRect(0,0,Parent.ClientWidth div 1440,Parent.ClientHeight div 1440);
      Hide;
      Show;
      Parent.SetFocus;
      SetFocus;
    end;
      

  16.   

    使用原始大小播放时控件不会改变大小啊。SetZoomRect(0,0,Parent.ClientWidth div 1440,Parent.ClientHeight div 1440);
    这段代码本身就有问题,如果Parent.ClientWidth<1440(这是的极有可能的,谁的显示器有那么大),那么这后面两个值始终是0,有什么意义呢。
      

  17.   

    恩,是错了,1440 TWIPS折合的是1英寸,和像素无关!
      

  18.   

    继续顶!!问题之三:当用户打开一个flash影片后,如何获知该影片的宽和高?
      

  19.   

    TShockwaveFlash主要属性如下: ReadyState:读一个flash文件时的状态,其中包括0=Loading、1=Uninitialized、2=Loaded、3=Interactive和4=Complete;
    TotalFrames:总帧数,只有当ReadyState = 4时才能访问该属性;
    FrameNum:当前播放的帧;
    Playing:播放或暂停一个flash;
    Quality:指定当前渲染的质量,包括0=Low, 1=High、2=AutoLow、3=AutoHigh;
    ScaleMode:缩放模式,0=ShowAll、1= NoBorder、2 = ExactFit;
    AlignMode:对齐模式,Left=+1、Right=+2、Top=+4、Bottom=+8;
    BackgroundColor:背景色,-1为默认颜色;
    Loop:是否循环;
    Movie:指定播放的flash文件路径,可以为一个URL。 TShockwaveFlash主要方法如下: Play():开始播放动画;
    Stop();停止播放动画;
    Back();播放前一帧动画;
    Forward():播放后一帧动画;
    Rewind():播放第一帧动画;
    SetZoomRect(int left, int top, int right, int bottom):设置缩放的区域;
    Zoom(int percent):按百分比缩放;
    Pan(int x, int y, int mode):缩放播放面板,其中模式0为按像数、1为按窗口百分比。 TShockwaveFlash主要事件如下: OnProgress(int percent):读取一个flash时触发;
    OnReadyStateChange(int state):状态改变时触发。states的值可以为0=Loading、1=Uninitialized、2=Loaded、3=Interactive和4=Complete。 
      

  20.   

    谢谢Rijie,这是一本 Delphi 控件编程书上的吧? 我也有这本书,不过这些没用啊。还是谢谢你啦!
      

  21.   

    http://www10.brinkster.com/lfstudio/ 自己去看看吧。有SWF文件格式的详细说明,
      

  22.   

    to Iamfish(呆鱼): 什么啊,一个空的Flash文件。