微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Flash AS3颜色校正

如何解决Flash AS3颜色校正

| 关于这个问题,我很快将需要假发来代替我已经拔掉的头发!我的网站上有一个Flash元素,它是一个XML画廊。它应该与背景无缝融合。我导入了一个具有透明度的PNG,其中一个边缘是与另一个BG的融合边缘。当然,Mac和Windows上都会有颜色变化。我尝试导入PSD,将其另存为JPG,并使用GammaSlamma删除配置文件以及所有其他内容。 我以为我必须手动调整图像以匹配,然后根据用户的操作系统或类似的东西提供两个不同的Flash文件,但是后来我看到AS3支持色彩校正,并且很多人似乎发现它很有用。不用说,我非常兴奋。但是,我以前从未使用过AS3,并且对此感到非常头痛。 我找到了AS3的免费替代幻灯片,但我不知道在哪里添加代码。 仅需根据http://kelsocartography.com/blog/?tag=as3-color-correction进行编码:
stage.colorCorrection = ColorCorrection.ON;
画廊的代码(很长的片段很抱歉):
    //----------------------------------------------------------------------------------------------------
//  XMLSlideshow.as 
//  19 Feb 2009
//  www.simplistika.com
//----------------------------------------------------------------------------------------------------
package com.simplistika
{
import flash.display.*;
import flash.events.*;
import flash.net.URLRequest;
import flash.utils.Timer;

//Color correction
import flash.display.ColorCorrection;
stage.colorCorrection = ColorCorrection.ON;

//----------------------------------------------------------------------------------------------------
//  class deFinition
//----------------------------------------------------------------------------------------------------
public class XMLSlideshow extends cXMLApp 
{
//----------------------------------------------------------------------------------------------------
//  member data
//----------------------------------------------------------------------------------------------------
private var mTimer : Timer;
private var mPlaceholder1 : Loader = new Loader();
private var mPlaceholder2 : Loader = new Loader();
private var mControl : mcControl = new mcControl();
private var mSlide : int;

//----------------------------------------------------------------------------------------------------
//  slideshow setup
//----------------------------------------------------------------------------------------------------
private var mFile : String = \"http://www.simplistika.com/files/ssp/Slideshow.xml\";      // path to xml file
private var mInterval : uint = 8000;                                                    // slide interval

//----------------------------------------------------------------------------------------------------
//  constructor
//----------------------------------------------------------------------------------------------------
public function 
XMLSlideshow(   
) : void
{       
    trace(this + \" \" + \"XMLSlideshow.constructor\");
    mTimer = new Timer(mInterval,0);

    mPlaceholder1.contentLoaderInfo.addEventListener(Event.OPEN,fOpen);
    mPlaceholder1.contentLoaderInfo.addEventListener(Event.COMPLETE,fResult);
    mPlaceholder2.contentLoaderInfo.addEventListener(Event.OPEN,fOpen);
    mPlaceholder2.contentLoaderInfo.addEventListener(Event.COMPLETE,fResult);

    //this.addEventListener(MouseEvent.MOUSE_OVER,fOnMouSEOver);
    //this.addEventListener(MouseEvent.MOUSE_OUT,fOnMouSEOut);
    //this.addEventListener(MouseEvent.CLICK,fOnClick);
    mTimer.addEventListener(TimerEvent.TIMER,fTimer);

    addChild(mPlaceholder1);
    addChild(mPlaceholder2);
    addChild(mControl);

    mSlide = 0;
    mControl.btnForward.alpha = mControl.btnBack.alpha = mControl.btnPause.alpha = 0.0;
    //mControl.btnForward.buttonMode = mControl.btnBack.buttonMode = mControl.btnPause.buttonMode = true;
    mControl.btnForward.visible = mControl.btnBack.visible = false;

    super(mFile);   
    super.addEventListener(\"XMLLoaded\",fStart);
}

//----------------------------------------------------------------------------------------------------
//  fStart
//----------------------------------------------------------------------------------------------------
private function 
fStart(
    e : Event
) : void
{
    trace(this + \" \" + \"XMLSlideshow.fStart\");

    fLoadImage();
}

//----------------------------------------------------------------------------------------------------
//  fOnMouSEOver
//----------------------------------------------------------------------------------------------------
/* private function 
fOnMouSEOver(
e : MouseEvent
) : void 
{   

    switch (e.target.name)
    {
    case \"btnPause\":
        mTimer.running ? mControl.txtDesc.text = \"Pause\" : mControl.txtDesc.text = \"Play\";
        break;      
    case \"btnForward\":
        mControl.txtDesc.text = \"Next\";
        break;      
    case \"btnBack\":
        mControl.txtDesc.text = \"Back\";     
        break;  
    default:
        return;
    }
    mControl.txtDesc.alpha = 1;
    e.target.alpha = 0.7;
}

//----------------------------------------------------------------------------------------------------
//  fOnMouSEOut
//----------------------------------------------------------------------------------------------------
private function 
fOnMouSEOut(
e : MouseEvent
) : void 
{
    switch (e.target.name)
    {
    case \"btnPause\":
    case \"btnForward\":
    case \"btnBack\":
        e.target.alpha = 0.5;
        mControl.txtDesc.alpha = 0;
        return;
    }
}

//----------------------------------------------------------------------------------------------------
//  fOnClick
//----------------------------------------------------------------------------------------------------
private function 
fOnClick(
    e : MouseEvent
) : void 
{
    trace(this + \" \" + \"XMLSlideshow.fOnClick \" + e.target.name);

    switch (e.target.name)
    {
    case \"btnPause\":
        if (mControl.txtDesc.text == \"Pause\") 
        {
            mTimer.stop();
            mControl.btnBack.visible = mControl.btnForward.visible = true;
            mControl.txtDesc.text = \"Play\";
        } 
        else 
        {
            mTimer.start();
            mControl.btnBack.visible = mControl.btnForward.visible = false;
            mControl.txtDesc.text = \"Pause\";
        }
        return;
    case \"btnForward\":
        mSlide == mItems - 1 ? mSlide = 0 : mSlide++;
        break;
    case \"btnBack\":
        mSlide == 0 ? mSlide = mItems - 1 : mSlide--;
        break;
    default:
        return;
    }       
    fLoadImage();
} */

//----------------------------------------------------------------------------------------------------
//  fLoadImage
//----------------------------------------------------------------------------------------------------
private function 
fLoadImage(
) : void
{
    getChildindex(mPlaceholder1) != 0 ?
        mPlaceholder2.load(new URLRequest(mData.slide[mSlide].url)) : 
            mPlaceholder1.load(new URLRequest(mData.slide[mSlide].url));
}

//----------------------------------------------------------------------------------------------------
//  fTimer
//----------------------------------------------------------------------------------------------------
private function 
fTimer(
    e : TimerEvent
) : void
{
    mSlide == mItems - 1 ? mSlide = 0 : mSlide++;
    fLoadImage();
}

//----------------------------------------------------------------------------------------------------
//  fOpen
//----------------------------------------------------------------------------------------------------
private function 
fOpen(
    e : Event
) : void 
{
    mTimer.stop();
}

//----------------------------------------------------------------------------------------------------
//  fResult
//----------------------------------------------------------------------------------------------------
private function 
fResult(
    e : Event
) : void
{
    if (!mControl.btnForward.visible)
        mTimer.start();

    getChildindex(mPlaceholder1) == 0 ? fNextimage(mPlaceholder1) : fNextimage(mPlaceholder2);
}

//----------------------------------------------------------------------------------------------------
//  fKenBurns
//----------------------------------------------------------------------------------------------------
private function 
fNextimage(
    vPlaceholder : Loader
) : void
{
    setChildindex(vPlaceholder,this.numChildren - 2);
    vPlaceholder.alpha = 0;
    vPlaceholder == mPlaceholder1 ? cTween.to(mPlaceholder2,{alpha:0},1) : cTween.to(mPlaceholder1,1);
    cTween.to(vPlaceholder,{ alpha:1 },1);
}

//----------------------------------------------------------------------------------------------------
}   // class

//----------------------------------------------------------------------------------------------------
}   // package
您可以看到我在其中添加了“色彩校正”,但是在运行文件时出现此错误
ReferenceError: Error #1065: Variable stage is not defined.
at global$init()
有什么建议么?谢谢....     

解决方法

        那是因为尚未定义/创建阶段。因此,这里有2个选项: 使用ADDED_TO_STAGE侦听器来 等待幻灯片添加 登台。因此,您需要添加 以下是构造函数:
addEventListener(Event.ADDED_TO_STAGE,
_添加);      并将此函数添加到类中:
private _added function(e:Event)
{
  removeEventListener(Event.ADDED_TO_STAGE,
_添加);       stage.colorCorrection = ColorCorrection.ON;     } 制作文档类(请参见 http://goo.gl/b92SU以获取更多信息 这些),就像这样:
package
{
  import flash.display.MovieClip;

  public class Main extends MovieClip
  {
    function Main()
    {
      addEventListener(Event.ADDED_TO_STAGE,_added);
      //other code that was in your main timeline
    }

    private function _added(e:Event):void
    {
      removeEventListener(Event.ADDED_TO_STAGE,_added);
      stage.colorCorrection = ColorCorrection.ON;
    }
  }
}
    ,        您不能将代码放在类之外。删除线
stage.colorCorrection = ColorCorrection.ON;
并将其放在您的Document Class构造函数上。如果您对此有疑问,则意味着您的应用程序设置不正确。我建议您创建一个新问题,或阅读本教程。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。