首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Flash AS3:根据当前帧更改变量

Flash AS3:根据当前帧更改变量
EN

Stack Overflow用户
提问于 2014-05-20 22:23:53
回答 1查看 321关注 0票数 1

好的,我有一个创建饼图的代码……

代码语言:javascript
复制
package {
import flash.display.Sprite;
import flash.display.MovieClip; 

public class App extends MovieClip {
    function App() {
        this.graphics.lineStyle(3, 0xFF0000);
        this.graphics.beginFill(0xFF0000, 0.5);
        this.drawSegment(this, stage.stageWidth/2, stage.stageHeight/2, piesize, -90, 0);
        this.drawSegment(this, stage.stageWidth/2, stage.stageHeight/2, piesize, 0, 110);
        this.drawSegment(this, stage.stageWidth/2, stage.stageHeight/2, piesize, 110, 180);
        this.drawSegment(this, stage.stageWidth/2, stage.stageHeight/2, piesize, 180, 270);
        this.graphics.endFill();
    }


var piesize:Number = 140;   

    var wedge1:Number = 90;
    var wedge2:Number = 110;
    var wedge3:Number = 90;
    var wedge4:Number = 90;


    /**
     * Draw a segment of a circle
     * @param target    <Sprite> The object we want to draw into
     * @param x         <Number> The x-coordinate of the origin of the segment
     * @param y         <Number> The y-coordinate of the origin of the segment
     * @param r         <Number> The radius of the segment
     * @param aStart    <Number> The starting angle (degrees) of the segment (0 = East)
     * @param aEnd      <Number> The ending angle (degrees) of the segment (0 = East)
     * @param step      <Number=1> The number of degrees between each point on the segment's circumference
     */
    function drawSegment(target:Sprite, x:Number, y:Number, r:Number, aStart:Number, aEnd:Number, step:Number = 1):void {
            // More efficient to work in radians
            var degreesPerRadian:Number = Math.PI / 180;
            aStart *= degreesPerRadian;
            aEnd *= degreesPerRadian;
            step *= degreesPerRadian;

            // Draw the segment
            target.graphics.moveTo(x, y);
            for (var theta:Number = aStart; theta < aEnd; theta += Math.min(step, aEnd - theta)) {
                target.graphics.lineTo(x + r * Math.cos(theta), y + r * Math.sin(theta));
            }
            target.graphics.lineTo(x + r * Math.cos(aEnd), y + r * Math.sin(aEnd));
            target.graphics.lineTo(x, y);
    };
}
}

按照建议,此代码是从外部AS文件中提取的。这可以很好地工作,并创建一个具有4个部分的可爱的红色饼图。

你会看到变量wedge1,wedge2等等,它们目前没有做任何事情,尽管我希望能够在我的主时间线的每一帧上更改这些变量。

有没有办法把这些变量放在主时间线上,当我在这些帧之间移动时,它会改变饼图中的这些变量?(我将只使用左键和右键一次向前和向后移动一帧)

此外,我将不得不以某种方式更改代码以实现此结果……我已经写了它SUDO风格,但任何帮助,准确地执行这段代码将非常感谢…

代码语言:javascript
复制
wedge1start == -90
wedge1end == wedge1start + wedge1
wedge2end == wedge1end + wedge2
wedge3end == wedge2end + wedge3
wedge4end == wedge2end + wedge4


this.drawSegment(this, stage.stageWidth/2, stage.stageHeight/2, piesize, wedge1start, wedge1end);
this.drawSegment(this, stage.stageWidth/2, stage.stageHeight/2, piesize, wedge1end, wedge2end);
this.drawSegment(this, stage.stageWidth/2, stage.stageHeight/2, piesize, wedge2end, wedge3end);
this.drawSegment(this, stage.stageWidth/2, stage.stageHeight/2, piesize, wedge3end, wedge4end);

我希望这是有意义的,我基本上是在尝试实现随着时间的前进或后退而改变的饼图部分和大小。这些变量是存在的,但我似乎无法从AS文件外部更改它们。

我应该使用输入框还是什么??

谢谢你的帮助,很抱歉问了这么长的问题

EN

回答 1

Stack Overflow用户

发布于 2014-05-21 01:22:34

假设您发布的类是您的document类,那么您需要做的就是将变量设为public

代码语言:javascript
复制
public var wedge1:Number = 0;

然后,在您的主时间线上,您可以通过名称访问它们,就像在伪代码中一样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23762465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档