2012-07-02 56 views
2

我正在用ActionScript 3編寫一個程序,其中涉及一個滑塊,在一年的過程中顯示星期和月份,當您將其滑動到右側的格式爲「第2周第3周「或」第8周第2周「。 我做了個這樣的: 功能monthHandler(){Actionscript 3 - 設置一個數字的倍數等於一個數字

var a:Number = ((Math.ceil(aSlider.value/4))+1); 
monthLabel.text = "Month" + String(a); 

} 

但是對於同一拉(aSlider)我想顯示星期,最多4個,每個月。我知道我需要基本設置一個數字閾值;值1-4將顯示週數:1-4,但值5-8也必須顯示1-4周。

我知道我可以使用IF()的crapton做循環,但我是比較新的編程,因此我假設有這樣做的更有效的方式,而我只是不知道它。我環顧網絡檢查數字的倍數,並設置數字閾值,但似乎沒有什麼適合我的問題。

當前代碼周是:

function weekHandler(){ 
var b:Number = ((Math.ceil(aSlider.value/12))+1); 
weekLabel.text = "Week:" + String(b); 
} 

這一切都顯示是1-4,我穿過的東西宿舍滑動滑塊我。就像我說的,我知道這不起作用,但我不知道該如何解決它。

+2

查看Modulo(%)運算符的文檔 –

+0

我想評論一下,您在這裏使用'ceil'函數可能是不正確的。由於您正在添加+1,因此您應該使用.floor() - 例如 - .ceil(1.0/4)+ 1 = 2; .ceil(3.0/4)+ 1 = 2; ..你可能想要返回0到3之間的值爲1的月份。使用地板你會返回1. :) – zehelvion

回答

0

假設你有滑塊12個月,每月4周:

月:

var months:int = (int)(dateSlider.value/4); 

周:

var weeks:int = (dateSlider.value % 4) + 1; 

的Flash實例:

flash-slider

如果你有一個dateSlider Flash組件:

flash-date-slider

你可以更新dateText的標籤,比如:

import fl.events.SliderEvent; 

dateSlider.addEventListener(SliderEvent.CHANGE, sliderChangeHandler); 

function sliderChangeHandler(event:SliderEvent):void 
{ 
    dateText.text = "Month: " + (int)(event.value/4) + " " + 
        "Week: " + ((event.value % 4) + 1); 
} 


Flex的例子:

month-0month-6month-12

<?xml version="1.0" encoding="utf-8"?> 
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
       xmlns:s="library://ns.adobe.com/flex/spark" 
       xmlns:mx="library://ns.adobe.com/flex/mx"> 

    <s:layout> 
     <s:VerticalLayout /> 
    </s:layout> 

    <s:Label text="Month: {(int)(dateSlider.value/4)} Week: {(dateSlider.value % 4) + 1}" /> 

    <s:HSlider id="dateSlider" 
       maximum="{(13 * 4) - 1}" 
       snapInterval="1" 
       stepSize="1" /> 

</s:Application> 

應當指出的是,日期的這一解釋似乎簡陋,如周每月的實際數量是4.34812。

明確計算日期時間間隔將是有益的。

1

基本上,我想你想要的代碼是:

var a:Number = (Math.ceil(aSlider.value) % 4) +1; 
weekLabel.text = "Week" + String(a); 

A%B =剩餘的除以b ..

你不會需要很多的 '如果()'否則計算它。

你可以使用(a - Math.floor(a/b)*b) < =,但不使用,使用a%b

相關問題