2017-05-19 8 views
-1

button_playbutton_pause이 있습니다. 나는 그들을 하나의 버튼으로 결합하고 싶다. 처음으로 노래를 누르면 노래가 연주되기 시작합니다. 두 번째 누르면 일시 중지됩니다. 세 번째 누를 때 재생이 계속됩니다. 나는 그것을 할 수 없습니다.두 개의 단추 조합 방법

어떻게 결합 할 수 있는지 말해주십시오. 같은

private void button_play_Click(object sender, EventArgs e) 
{ 
    if ((list_catalog.Items.Count != 0) && (list_catalog.SelectedIndex != -1)) 
    { 
     string current = Vars.Files[list_catalog.SelectedIndex]; 
     Vars.CurrentTrackNumber = list_catalog.SelectedIndex; 
     BassLike.Play(current, BassLike.Volume); 
     label_time1.Text = TimeSpan.FromSeconds(BassLike.GetPosOfStream(BassLike.Stream)).ToString(); 
     label_time2.Text = TimeSpan.FromSeconds(BassLike.GetTimeOfStream(BassLike.Stream)).ToString(); 
     xrewind.Maximum = BassLike.GetTimeOfStream(BassLike.Stream); 
     xrewind.Value = BassLike.GetPosOfStream(BassLike.Stream); 
     timer1.Enabled = true; 
    } 
} 

private void button_pause_Click(object sender, EventArgs e) 
{ 
    BassLike.Pause(); 
} 
+0

그래서 '1 버튼'을 사용하여 코드를 작성한 다음 첫 번째 버튼을 클릭하면 코드를 작성할 수 없습니다. 두 번째 클릭 후 텍스트를 '일시 중지됨'으로 변경하십시오. '버튼의 텍스트가'일시 중지됨 ' ")'다시"시작 "로 설정하고 몇 가지 추가적인 논리를 수행 .. 나는 여기에 문제가 무엇인지 모르겠다 ..? 또는 boolean을 정확하게 사용하는 법을 배웁니다. – MethodMan

+0

기본적으로 노래가 재생되는지 확인하는 방법이 필요합니다. 이상적으로는 노래의 상태를 확인할 수있는 방법이 있습니다. GetIsPlaying()과 마찬가지로 해당 함수의 결과에 따라 동작을 변경합니다. 쉬운 방법은 'IsPlaying'속성을 사용하여 상태를 추적하고 IsPlaying =! IsPlaying 속성을 반전하고 버튼 텍스트를 업데이트 할 때마다 – musefan

답변

5

뭔가 :

private bool _isPlaying; 

private void button_Click(object sender, EventArgs e) 
{ 
    if(!_isPlaying) 
    { 
     mediaThing.Play(); 
     button1.Text = "Pause"; 
    } 
    else 
    { 
     mediaThing.Pause(); 
     button1.Text = "Play"; 
    } 

    _isPlaying = !_isPlaying; 
} 
+0

"Stop"이 아닌 "Pause"를 묻는 것입니다. – musefan

+1

@musefan tnx ... 그것을 고쳤습니다. –

+0

나는 당신의 방법을 이해하지 못합니다. 내 코드를 기반으로 변경할 수 있습니까? – Gif

0

가장 쉬운 방법은 새로운 버튼 객체를 생성하고, 올바른 이미지를 표시하기위한 적절한 방법을 추가하는 것입니다. 다음과 같은 내용 :

public class ButtonStateHandler:MonoBehaviour { 
public boolean isClicked; 
public Button myBtn; 
public Sprite Play; 
public Sprite Pause; 

public void Click(){ 
    changeState(); 
} 
private void changeState(){ 
    isClicked = !isClicked; 
    if(isClicked)  myBtn.image.sprite = Play; 
    else myBtn.image.sprite = Pause; 
    } 
} 

희망이 있습니다.