我正在用ActionScript3编写一个程序,其中涉及一个滑块,它显示一年中的周和月,当您将它滑动到右侧时,格式为“月2周3”或“月8周2”。我这样做了几个月:函数monthHandler(){
var a:Number = ((Math.ceil(aSlider.value/4))+1);
monthLabel.text = "Month" + String(a);
}然而,对于相同的滑块(aSlider),我想显示每个月的周,最多4周。我知道我基本上需要设置一个数字阈值;值1-4将显示周: 1-4,但是值5-8也必须显示周1-4。
我知道我可以通过使用crapton的If()循环来做到这一点,但我对编程相对较新,所以我假设有一种更有效的方法来做到这一点,而我只是不知道它。我在网络上四处寻找,检查数字的倍数,并设置数字阈值,但似乎没有适合我的问题。
几周的当前代码是:
function weekHandler(){
var b:Number = ((Math.ceil(aSlider.value/12))+1);
weekLabel.text = "Week:" + String(b);
}所有这一切所做的是显示1-4当我滑动我的滑块在四分之一的东西。就像我说的,我知道这不起作用,但我不知道该怎么做才能修复它。
发布于 2012-07-03 13:12:39
假设你的滑块是12个月,每月4周:
月份:
var months:int = (int)(dateSlider.value / 4);Week:
var weeks:int = (dateSlider.value % 4) + 1;闪存示例:

如果您有dateSlider闪存组件:

您可以更新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示例:



<?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周。
显式计算日期时间跨度将是有益的。
发布于 2012-07-03 13:10:37
基本上,我认为你想要的代码是:
var a:Number = (Math.ceil(aSlider.value) % 4) +1;
weekLabel.text = "Week" + String(a);A%b=a除以b的余数。
否则你不需要太多的'if()‘来计算它。
您可以使用(a - Math.floor(a/b)*b) <=,但不要使用它,请使用a%b
https://stackoverflow.com/questions/11302697
复制相似问题