당신이 다음의 예처럼 될 수있는 접근 coud 방법 :
당신은 클래스 홈페이지 (문서 클래스)를 만들 것이다, com.vincent.Slides 및 COM .
package
{
import com.vincent.Slides;
import flash.display.MovieClip;
public class Main extends MovieClip
{
public function Main():void
{
init();
}// end function
private function init():void
{
var slides:Slides = new Slides(550, 400, [0xFF0000, 0x00FF00, 0x0000FF]);
addChild(slides);
}// end function
}// end class
}// end package
Main 클래스에서는 Slides 클래스를 가져 와서 인스턴스를 만듭니다. 슬라이드 클래스의 인수는 슬라이드의 너비, 높이 및 색상입니다. 이 예제에서는 콘텐츠를로드하는 대신 색상을 사용하여 플래시 앱/동영상을 단순하게 유지합니다. 마지막으로 Slides 인스턴스를 스테이지에 추가합니다.
package com.vincent
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
public class Slides extends Sprite
{
private var _width:Number;
private var _height:Number;
private var _slideColors:Array;
private var _slides:Array;
private var _currentSlide:int = 1;
private var _leftControl:Sprite;
private var _rightControl:Sprite;
private var _isSliding:Boolean;
public function Slides(p_width:Number, p_height:Number, p_slideColors:Array):void
{
_width = p_width;
_height = p_height;
_slideColors = p_slideColors;
init();
}// end function
private function init():void
{
addSlides();
addControls();
addMask();
addEventListener(Event.ENTER_FRAME, enterFrameHandler);
}// end function
private function addSlides():void
{
_slides = new Array();
for(var i:uint = 0; i < _slideColors.length; i++)
{
var slide:Slide = new Slide(_width, _height, _slideColors[i]);
slide.x = _width * i;
addChild(slide);
_slides.push(slide);
}// end for
}// end function
private function addControls():void
{
_leftControl = new Sprite();
_leftControl.graphics.beginFill(0x000000, 0);
_leftControl.graphics.drawRect(0, 0, 50, _height);
_leftControl.graphics.endFill();
addChild(_leftControl);
var _rightControl:Sprite = new Sprite();
_rightControl.graphics.beginFill(0x000000, 0);
_rightControl.graphics.drawRect(0, 0, 50, _width);
_rightControl.graphics.endFill();
_rightControl.x = _width - _rightControl.width;
addChild(_rightControl);
_leftControl.addEventListener(MouseEvent.CLICK, mouseClickHandler);
_rightControl.addEventListener(MouseEvent.CLICK, mouseClickHandler);
}// end function
private function mouseClickHandler(e:MouseEvent):void
{
if(!_isSliding)
{
if(e.currentTarget == _leftControl)
{
slideLeft();
}
else
{
slideRight();
}// end if
}// end if
}// end function
private function slideLeft():void
{
if(!(_currentSlide <= 1))
{
for(var i:uint = 0; i < _slides.length; i++)
{
_slides[i].tweenLeft();
}// end for
_currentSlide--;
}// end if
}// end function
private function slideRight():void
{
if(!(_currentSlide >= _slides.length))
{
for(var i:uint = 0; i < _slides.length; i++)
{
_slides[i].tweenRight();
}// end for
_currentSlide++;
}// end if
}// end function
private function addMask():void
{
var maskSprite:Sprite = new Sprite();
maskSprite.graphics.beginFill(0x000000);
maskSprite.graphics.drawRect(0, 0, _width, _height);
maskSprite.graphics.endFill();
addChild(maskSprite);
this.mask = maskSprite;
}// end function
private function enterFrameHandler(e:Event):void
{
if(_slides[0].isSliding)
{
_isSliding = true;
}
else
{
_isSliding = false;
}// end if else
}// end function
}// end class
} // 슬라이드 클래스에서 최종 패키지
, 당신은 스프라이트, 이벤트 및 된 MouseEvent 클래스를 가져올 것입니다. Slide 클래스는 내부 클래스이므로 가져올 필요가 없습니다. 내부 클래스는 동일한 패키지 내의 모든 클래스에서 액세스 할 수 있습니다. 다음으로 Slides 클래스의 Sprite 클래스를 확장합니다.
다음에는 표시 객체의 너비와 높이를 포함하는 _width 및 _height 속성을 선언합니다. 각 슬라이드의 색상 배열을 포함하는 _slideColors. 현재 슬라이드 번호를 나타내는 _currentSlide; _leftControl 및 _rightControl은 클릭시 슬라이드를 왼쪽 및 오른쪽으로 밀어 넣기위한 컨트롤입니다. 마지막으로 _isSliding은 슬라이드가 움직이는 경우 true로, 그렇지 않은 경우 false로 설정됩니다.
Slide 클래스를 초기화하려면 Slides 속성에 해당 Slides 인수를 할당합니다. 그런 다음 init()이라는 첫 번째 메서드에서 addSlides() 메서드에 대한 호출이 호출됩니다.
addSlides() 메서드에서 _slides 속성이 인스턴스화됩니다. 다음 for 루프는 _slideColors 배열의 모든 슬라이드 색상을 반복하고 무대에 추가 된 Slide 인스턴스를 만들고 _slides 배열에 추가하는 데 사용됩니다. 각 Slide 인스턴스를 만들 때 너비, 높이 및 슬라이드 색상이 파싱되고 각 슬라이드는 이전 슬라이드의 오른쪽에 배치됩니다.
addSlides() 메서드가 호출 된 후 init() 메서드에서 호출 된 다음 메서드는 addControls()입니다. addControls() 메서드에서 _leftControl 및 _rightControl 스프라이트가 그려지고 슬라이드 표시 객체에 추가됩니다. 이들은 보이지 않으며 슬라이드 표시 객체의 왼쪽 및 오른쪽 가장자리에 각각 배치됩니다. 다음으로 사용자가 클릭했을 때들을 수있는 컨트롤에 이벤트 리스너를 추가합니다. 사용자가 클릭하면 mouseClickHandler() 메서드가 호출됩니다.
mouseClickHandler() 메서드에는 슬라이드가 슬라이드되는지 확인하는 조건문이 있습니다. 그렇지 않은 경우 다른 조건문에서 클릭 한 컨트롤을 확인하고 해당하는 slideLeft() 또는 slideRight() 메서드를 호출합니다.
slideLeft() 및 slideRight() 메서드에는 현재 슬라이드가 첫 번째 또는 마지막 슬라이드가 아닌지 확인하는 조건문이 있습니다. 그렇지 않은 경우 _slides 배열의 모든 슬라이드에 대해 tweenLeft() 또는 tweenRight() 메서드가 호출됩니다. 그 후 _currentSlide 속성이 1 씩 증가하거나 감소합니다.
addControls() 메서드가 호출 된 후 init() 메서드에서 호출되는 다음 메서드는 addMask()입니다. 이렇게하면 Sprites 표시 객체에 마스크를 추가하기 만하면 한 번에 하나의 슬라이드 만 볼 수 있습니다.
addMask() 메소드가 호출 된 후 init() 메소드에서 호출 된 다음 메소드는 addMask()입니다. 이렇게하면 Sprites 표시 객체에 마스크를 추가하기 만하면 한 번에 하나의 슬라이드 만 볼 수 있습니다.
마지막으로 addMask() 메서드가 호출 된 후 enterFrameHandler() 메서드를 반복적으로 발생시키는 입력 프레임 이벤트 수신기를 추가합니다.
enterFrameHandler() 메서드에는 슬라이드가 슬라이딩 중인지 확인하고 true 또는 false를 _isSliding 속성에 할당하는 조건문이 있습니다.
package com.vincent
{
import com.greensock.TweenLite;
import flash.display.Sprite;
internal class Slide extends Sprite
{
private var _width:Number;
private var _height:Number;
private var _slideColor:uint;
private var _isSliding:Boolean;
public function get isSliding():Boolean
{
return _isSliding;
}// end function
public function Slide(p_width:Number, p_height:Number, p_slideColor:uint):void
{
_width = p_width;
_height = p_height;
_slideColor = p_slideColor;
init();
}// end function
private function init():void
{
var slideContent:Sprite = new Sprite();
slideContent.graphics.beginFill(_slideColor);
slideContent.graphics.drawRect(0, 0, _width, _height);
slideContent.graphics.endFill();
addChild(slideContent);
}// end function
public function tweenLeft():void
{
_isSliding = true;
TweenLite.to(this, 1, {x: this.x + _width, onComplete: onTweenComplete});
}// end function
public function tweenRight():void
{
_isSliding = true;
TweenLite.to(this, 1, {x: this.x - _width, onComplete: onTweenComplete});
}// end function
private function onTweenComplete():void
{
_isSliding = false;
}// end function
}// end class
}// end package
이것은 슬라이드 클래스에 사용할 코드입니다.
그걸로 예제는 완전하고 작동합니다. 솔직히 질문하는 것이 약간 이해하기 어려웠으므로 TweenLite에서 슬라이드를 사용하여 매우 다른 예를 들었습니다. TweenLite를 사용하여 슬라이드에서 뭔가를 가져갈 수 있기를 바랍니다. 이 방법을 사용하면 Slide 클래스에서 TweenLite.to() 메서드를 편집하여 각 슬라이드의 트윈 효과를 변경할 수 있습니다. 플래시 앱/영화 또는 링크에서 더 많은 코드를 추가 할 수 있다면 더 나은 답변을 얻을 수 있습니다. 나는 그것이 당신에게 더 나은 것을주는 것을 확실히 도울 것입니다. 예제에 대해 질문이 있으면 의견을 남기거나 나와 연락하십시오 (내 연락처 정보는 내 프로필에 있습니다).
도움이 되었기를 바랍니다.