2013-01-24 2 views
-1

나는 액션 스크립트가 아닌 플래시가 아니지만 내 웹 사이트에서 플래시 애플릿을 사용해야한다. 여기에 객체 데모가있다. http://www.weberdesignlabs.com/demos/flash_10_coverflow/플래시 애니메이션/AS에서 객체 경계를 삭제

그래서 문제는, 나는 각 이미지 주위의 공백 테두리와 이미지 반사를 사용하지 않도록 설정하려고합니다. 나는 이미지 경계 자체를 사용할 수 없게 될 때 반사 경계도 사용할 수 없게 될 것이라고 생각한다.

물론이 프로젝트를 수정하는 데 필요한 .fla와 모든 .asa가 있습니다.

내가 시도한 것은 succes에서 "Coverflow.as"라는 .as 파일에서이 줄을 수정하여 공백 테두리를 4에서 0으로 설정하는 것입니다.

private var padding:Number=4;

경계 효과적으로 얇은 수 있지만 국경은 여전히 ​​여기에있다. 이름, 6 더 스크립트 파일이 있음을

//////////////////////////////////////////// 
// Project: Flash 10 Coverflow 
// Date: 10/3/09 
// Author: Stephen Weber 
//////////////////////////////////////////// 
package { 

    //////////////////////////////////////////// 
    // IMPORTS 
    //////////////////////////////////////////// 

    import flash.display.Sprite; 
    import flash.display.BitmapData; 
    import flash.display.Bitmap; 
    import flash.display.GradientType; 
    import flash.display.Graphics; 
    import flash.display.Shape; 
    import flash.display.MovieClip; 
    import flash.display.BlendMode; 
    import flash.display.Loader; 
    import flash.events.Event; 
    import flash.events.KeyboardEvent; 
    import flash.events.MouseEvent; 
    import flash.events.IOErrorEvent; 
    import flash.geom.Matrix; 
    import flash.geom.Rectangle; 
    import flash.geom.ColorTransform; 
    import flash.net.URLRequest; 
    import flash.net.URLLoader; 
    import flash.net.navigateToURL; 
    import flash.display.Stage; 
    import flash.utils.setTimeout; 

    //TweenLite - Tweening Engine - SOURCE: http://blog.greensock.com/tweenliteas3/ 
    import com.greensock.*; 
    import com.greensock.easing.*; 
    import com.greensock.plugins.*; 

    public class Coverflow extends Sprite { 

     //////////////////////////////////////////// 
     // VARIABLES 
     //////////////////////////////////////////// 

     // size of the stage 
     private var sw:Number; 
     private var sh:Number; 

     private var background:Background; 

     // padding between each cover, can be customed via xml 
     private var coverflowSpacing:Number=30; 

     // transition time for movement 
     private var transitionTime:Number=0.75; 

     // the center of the stage 
     private var centerX:Number; 
     private var centerY:Number; 

     // store each image cover's instance 
     private var coverArray:Array=new Array(); 

     // title of each image 
     private var coverLabel:CoverflowTitle = new CoverflowTitle(); 

     // the slider under the image cover 
     private var coverSlider:Scrollbar; 

     // how many image covers 
     private var coverflowItemsTotal:Number; 

     // how to open the link 
     private var _target:String; 

     // size of the image cover 
     private var coverflowImageWidth:Number; 

     private var coverflowImageHeight:Number; 

     //Holds the objects in the data array 
     private var _data:Array = new Array(); 

     // the y position of the item's title 
     private var coverLabelPositionY:Number; 

     //Z Position of Current CoverflowItem 
     private var centerCoverflowZPosition:Number=-125; 

     // display the middle of the cover or not 
     private var startIndexInCenter:Boolean=true; 

     // which cover to display in the beginning 
     private var startIndex:Number=0; 

     // the slide's Y position 
     private var coverSlidePositionY:Number; 

     //Holder for current CoverflowItem 
     private var _currentCover:Number; 

     //CoverflowItem Container 
     private var coverflowItemContainer:Sprite = new Sprite(); 

     //XML Loading 
     private var coverflowXMLLoader:URLLoader; 

     //XML 
     private var coverflowXML:XML; 

     // the image cover's white border padding 
     private var padding:Number=0; 

     // stage reference 
     private var _stage:Stage; 

     //reflection 
     private var reflection:Reflect; 

     //Reflection Properties 
     private var reflectionAlpha:Number; 

     private var reflectionRatio:Number; 

     private var reflectionDistance:Number; 

     private var reflectionUpdateTime:Number; 

     private var reflectionDropoff:Number; 

     //////////////////////////////////////////// 
     // CONSTRUCTOR - INITIAL ACTIONS 
     //////////////////////////////////////////// 
     public function Coverflow(_width:Number, _height:Number, __stage:Stage = null):void { 
      _stage=__stage; 
      sw=_width; 
      sh=_height; 
      centerX=_width>>1; 
      centerY=(_height>>1) - 20; 
      loadXML(); 

      //Grabs Background color passed in through FlashVars 
      var backgColor:String = _stage.loaderInfo.parameters["backgroundColor"]; 

      if(backgColor == null) { 
       //Black 
       backgColor = "0x000000"; 

       //White 
       //backgColor = "0xFFFFFF"; 
      } 

      //Creates Background MovieClip 
      background = new Background(); 

      //Set Background To Provided Width/Height 
      background.width = _width; 
      background.height = _height; 

      //Adds background MovieClip to DisplayList 
      addChild(background); 

      //Tints Background MovieClip with provided tint 
      TweenPlugin.activate([TintPlugin]); 
      TweenLite.to(background, 0, {tint:backgColor}); 

      //Grabs Background color passed in through FlashVars 
      var labelColor:String = _stage.loaderInfo.parameters["labelColor"]; 

      //Check for value and then default 
      if(labelColor == null) { 
       //Black 
       //labelColor = "0x000000"; 

       //White 
       labelColor = "0xFFFFFF"; 
      } 

      //Tint Coverflow label to color provided 
      TweenLite.to(coverLabel, 0, {tint:labelColor}); 

      if (_stage) { 
       _stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); 
      } 
     } 
     //////////////////////////////////////////// 
     // FUNCTIONS 
     //////////////////////////////////////////// 

     private function keyDownHandler(e:KeyboardEvent):void { 
      if (e.keyCode==37||e.keyCode==74) { 
       clickPre(); 
      } 
      if (e.keyCode==39||e.keyCode==75) { 
       clickNext(); 
      } 
      // 72 stand for "H" key, 191 stand for "?" key 
      if (e.keyCode==72||e.keyCode==191) { 

      } 
     } 

     // display the previous image 
     private function clickPre(e:Event=null):void { 
      _currentCover--; 
      if (_currentCover<0) { 
       _currentCover=coverflowItemsTotal-1; 
      } 
      coverSlider.value=_currentCover; 
      gotoCoverflowItem(_currentCover); 
     } 

     // display the next image 
     private function clickNext(e:Event=null):void { 
      _currentCover++; 
      if (_currentCover>coverflowItemsTotal-1) { 
       _currentCover=0; 
      } 
      coverSlider.value=_currentCover; 
      gotoCoverflowItem(_currentCover); 
     } 

     // loading the XML 
     private function loadXML():void { 

      //Loads XML passed through FlashVars 
      var xml_source:String = _stage.loaderInfo.parameters["xmlPath"]; 

      //If XML not found through FlashVars then defaults to xml path below 
      if(xml_source == null) { 
       xml_source = 'xml/data.xml'; 
      } 

      // loading the cover xml here 
      coverflowXMLLoader = new URLLoader(); 
      coverflowXMLLoader.load(new URLRequest("xml/data.xml")); 
      coverflowXMLLoader.addEventListener(Event.COMPLETE, coverflowXMLLoader_Complete); 
      coverflowXMLLoader.addEventListener(IOErrorEvent.IO_ERROR, coverflowXMLLoader_IOError); 

     } 

     // parse the XML 
     private function coverflowXMLLoader_Complete(e:Event):void { 
      coverflowXML=new XML(e.target.data); 
      coverflowItemsTotal=coverflowXML.cover.length(); 
      coverflowSpacing=Number([email protected]); 
      coverflowImageWidth=Number([email protected]); 
      coverflowImageHeight=Number([email protected]); 
      coverLabelPositionY=Number([email protected]); 
      coverSlidePositionY=Number([email protected]); 
      transitionTime=Number([email protected]); 
      centerCoverflowZPosition=Number([email protected]); 

      //Image Border 
      padding = Number([email protected]) 

      //Reflection Attributes 
      reflectionAlpha=Number([email protected]); 
      reflectionRatio=Number([email protected]); 
      reflectionDistance=Number([email protected]); 
      reflectionUpdateTime=Number([email protected]); 
      reflectionDropoff=Number([email protected]); 

      startIndex=Number([email protected]); 
      startIndexInCenter = ([email protected]().toString()=="yes"); 
      [email protected](); 

      for (var i=0; i<coverflowItemsTotal; i++) { 

       //Make An Object To Hold Values 
       var _obj:Object = new Object(); 

       //Set Values To Object from XML for each CoverflowItem 
       _obj.image = (coverflowXML.cover[i][email protected]()); 
       _obj.title = (coverflowXML.cover[i][email protected]()); 
       _obj.link = (coverflowXML.cover[i][email protected]()); 
       _data[i] = _obj; 

      } 
      loadCover(); 
     } 

     private function coverflowXMLLoader_IOError(event:IOErrorEvent):void { 
      trace("Coverflow XML Load Error: "+ event); 
     } 

     // load the image cover when xml is loaded 
     private function loadCover():void { 

      for (var i:int = 0; i < coverflowItemsTotal; i++) { 
       var cover:Sprite=createCover(i,_data[i].image); 
       coverArray[i]=cover; 
       cover.y=centerY; 
       cover.z=0; 
       coverflowItemContainer.addChild(cover); 
      } 

      if (startIndexInCenter) { 
       startIndex=coverArray.length>>1; 
       gotoCoverflowItem(startIndex); 

      } else { 

       gotoCoverflowItem(startIndex); 

      } 
      _currentCover=startIndex; 
      coverSlider=new Scrollbar(coverflowItemsTotal,_stage); 
      coverSlider.value=startIndex; 
      coverSlider.x = (_stage.stageWidth/2) - (coverSlider.width/2); 
      coverSlider.y=_stage.stageHeight-40; 
      coverSlider.addEventListener("UPDATE", coverSlider_Update); 
      coverSlider.addEventListener("PREVIOUS", coverSlider_Previous); 
      coverSlider.addEventListener("NEXT", coverSlider_Next); 
      addChild(coverSlider); 

      //coverLabel.x = (sw - coverLabel.width)>>1; 
      coverLabel.x = (_stage.stageWidth/2) - (coverLabel.width/2); 
      coverLabel.y=coverLabelPositionY; 
      addChild(coverLabel); 

      addChild(coverSlider); 
      addChild(coverLabel); 

     } 

     private function coverSlider_Update(e:Event):void { 
      var value:Number=(coverSlider.value); 
      gotoCoverflowItem(value); 
      e.stopPropagation(); 
     } 

     private function coverSlider_Previous(e:Event):void { 
      clickPre(); 
     } 

     private function coverSlider_Next(e:Event):void { 
      clickNext(); 
     } 

     // move to a certain cover via number 
     private function gotoCoverflowItem(n:int):void { 
      _currentCover=n; 
      reOrderCover(n); 
      if (coverSlider) { 
       coverSlider.value=n; 
      } 
     } 

     private function cover_Selected(event:CoverflowItemEvent):void { 

      var currentCover:uint=event.data.id; 

      if (coverArray[currentCover].rotationY==0) { 
       try { 
        // open the link if user click the cover in the middle again 
        if (_data[currentCover].link!="") { 
         navigateToURL(new URLRequest(_data[currentCover].link), _target); 
        } 

       } catch (e:Error) { 
        // 
       } 

      } else { 
       gotoCoverflowItem(currentCover); 

      } 

     } 

     // change each cover's position and rotation 
     private function reOrderCover(currentCover:uint):void { 
      for (var i:uint = 0, len:uint = coverArray.length; i < len; i++) { 
       var cover:Sprite=coverArray[i]; 

       if (i<currentCover) { 
        //Left Side 
        TweenLite.to(cover, transitionTime, {x:(centerX - (currentCover - i) * coverflowSpacing - coverflowImageWidth/2), z:(coverflowImageWidth/2), rotationY:-65}); 
       } else if (i > currentCover) { 
        //Right Side 
        TweenLite.to(cover, transitionTime, {x:(centerX + (i - currentCover) * coverflowSpacing + coverflowImageWidth/2), z:(coverflowImageWidth/2), rotationY:65}); 
       } else { 
        //Center Coverflow 
        TweenLite.to(cover, transitionTime, {x:centerX, z:centerCoverflowZPosition, rotationY:0}); 

        //Label Handling 
        coverLabel._text.text=_data[i].title; 
        coverLabel.alpha=0; 
        TweenLite.to(coverLabel, 0.75, {alpha:1,delay:0.2}); 

       } 
      } 
      for (i = 0; i < currentCover; i++) { 
       addChild(coverArray[i]); 
      } 
      for (i = coverArray.length - 1; i > currentCover; i--) { 
       addChild(coverArray[i]); 
      } 

      addChild(coverArray[currentCover]); 
      if (coverSlider) { 
       addChild(coverSlider); 
       addChild(coverLabel); 
      } 
     } 

     //Create CoverflowItem and Set Data To It 
     private function createCover(num:uint, url:String):Sprite { 

      //Setup Data 
      var _data:Object = new Object(); 
      _data.id=num; 

      //Create CoverflowItem 
      var cover:CoverflowItem=new CoverflowItem(_data); 

      //Listen for Click 
      cover.addEventListener(CoverflowItemEvent.COVERFLOWITEM_SELECTED, cover_Selected); 

      //Set Some Values 
      cover.name=num.toString(); 
      cover.image=url; 
      //cover.padding=padding; 
      cover.imageWidth=coverflowImageWidth; 
      cover.imageHeight=coverflowImageHeight; 
      cover.setReflection(reflectionAlpha, reflectionRatio, reflectionDistance, reflectionUpdateTime, reflectionDropoff); 

      //Put CoverflowItem in Sprite Container 
      var coverItem:Sprite = new Sprite(); 
      cover.x=- coverflowImageWidth/2-padding; 
      cover.y=- coverflowImageHeight/2-padding; 
      coverItem.addChild(cover); 
      coverItem.name=num.toString(); 

      return coverItem; 
     } 

    } 
} 

참고 : CoverflowItem.as, CoverflowItemEvent.as, Main.as, Reflect.as, 스크롤

나는 당신에게 Coverflow.as 스크립트 코드를 붙여 넣습니다. as, ScrollbarEvent.as.

솔루션이 위의 스크립트 파일에 있기를 바랍니다. AS를 잘 알고있는 누군가가 나를 향해 좋은 방향으로 나를 가리킬 수 있다면, 나는 매우 기뻐할 것입니다!

죄송합니다. 영어가 제발 좋지 않은 경우 죄송합니다.

+1

CoverflowItem.as 내부를 살펴보면 그래픽 표지 오브젝트가 빌드되는 곳에 있어야합니다. 실제로는 테두리가 아니라 표지 이미지보다 약간 큰 흰색 배경 일 수 있습니다. 어떤 경우에는 완전히 제거하거나 알파를 0으로 설정하여 볼 수 없도록해야합니다. 희망이 도움이! – danii

답변

0

이 구성 요소는 data.xml이라는 파일에서 설정을로드합니다. 해당 XML 파일에서 imagePadding="0"을 설정하면 테두리를 제거해야합니다.

+0

사실, 그것은 패딩이 아니라, danii가 말했듯이, 빈 배경이었습니다. xml 파일에서 imagepadding을 0으로 설정하면 테두리가 완전히 삭제되지 않고 솔루션이 더 간단 해졌습니다. 실제로 xml에서는 이미지가 배경보다 한 픽셀 짧았습니다! 감사 ! – Math