所以我一直在使用 Flash 来创建交互式图形,尽管现在世界上大多数人都反对使用 Flash。我之前做过一些转换为 HTML5 的实验,似乎工作正常。
我很快意识到主时间线上的动作脚本被注释掉了,因此设法将我所有的动作脚本移植到一个类中,并从库中加载我的电影剪辑。
我的项目不完整,但我得到了大部分功能并对其进行了测试。没啥事儿。我可以看到很多 JS 代码和 HTML,但我的影片剪辑从未加载到舞台上。我浪费了一周的工作吗?
HTML5 画布接受什么?我不认为我的代码过于复杂
无论如何,这是我的课......(我的 .fla 只是几个空帧)
package {
import flash.display.Stage;
import flash.display.Sprite;
import flash.display.MovieClip;
import flash.events.Event;
import flash.display.MovieClip;
import flash.events.MouseEvent;
public class App extends MovieClip {
var debtcapital:Number;
var mergers:Number;
var equity:Number;
var syndicated:Number;
var globally:Number;
var piesize:Number;
var wedge1:Number;
var wedge2:Number;
var wedge3:Number;
var wedge4:Number;
function App() {
stop();
var button:rightBtn = new rightBtn;
this.addChild(button);
button.x=390;
button.y=90;
var button2:leftBtn = new leftBtn;
this.addChild(button2);
button2.x=90;
button2.y=90;
button2.addEventListener(MouseEvent.CLICK, onClickPrevSlide);
function onClickPrevSlide(event:MouseEvent):void{
gotoAndStop(currentFrame-1);
}
button.addEventListener(MouseEvent.CLICK, onClickNextSlide);
function onClickNextSlide(event:MouseEvent):void{
gotoAndStop(currentFrame+1);
}
addEventListener(MouseEvent.CLICK, makePie);
}
public function makePie(e:Event):void {
function valueToPercent($value:Number, $min:Number, $max:Number):Number {
var myPercent:Number;
var difference:Number = $max - $min;
myPercent = (($value - $min) / difference)*360;
return myPercent;
}
if(currentFrame == 1){
debtcapital = 4131;
mergers = 7620;
equity = 6882;
syndicated = 2728;
globally = 21362;
}
if(currentFrame == 2){
debtcapital = 6863;
mergers = 11185;
equity = 9925;
syndicated = 3469;
globally = 31442;
}
if(currentFrame == 3){
debtcapital = 9739;
mergers = 13344;
equity = 10884;
syndicated = 4930;
globally = 38897;
}
if(currentFrame == 4){
debtcapital = 6131;
mergers = 4620;
equity = 1882;
syndicated = 7728;
globally = 20362;
}
var firstwedge:Number = Math.round(valueToPercent(debtcapital, 0, globally));
var secondwedge:Number = Math.round(valueToPercent(mergers, 0, globally));
var thirdwedge:Number = Math.round(valueToPercent(equity, 0, globally));
var fourthwedge:Number = Math.round(valueToPercent(syndicated, 0, globally));
wedge1 = firstwedge;
wedge2 = secondwedge;
wedge3 = thirdwedge;
wedge4 = fourthwedge;
piesize = globally / 400;
var wedge1start = -90
var wedge1end = wedge1start + wedge1
var wedge2end = wedge1end + wedge2
var wedge3end = wedge2end + wedge3
var wedge4end = wedge3end + wedge4
var drawings:Sprite = new Sprite();
var coin:Coin = new Coin;
this.graphics.clear();
drawings.graphics.lineStyle(3, 0xFFFFFF);
drawings.graphics.beginFill(0xFF0000, 0.2);
this.drawSegment(drawings, stage.stageWidth/2, stage.stageHeight/2, piesize, wedge1start, wedge1end, 0x000000);
this.drawSegment(drawings, stage.stageWidth/2, stage.stageHeight/2, piesize, wedge1end, wedge2end);
this.drawSegment(drawings, stage.stageWidth/2, stage.stageHeight/2, piesize, wedge2end, wedge3end);
this.drawSegment(drawings, stage.stageWidth/2, stage.stageHeight/2, piesize, wedge3end, wedge4end);
this.addChild(drawings);
drawings.graphics.endFill();
this.addChild(coin);
coin.x=stage.stageWidth/2;
coin.y=stage.stageHeight/2;
coin.scaleX = piesize / 140;
coin.scaleY = piesize / 140;
this.addChild(coin);
this.swapChildren(drawings, coin); // swaps two objects
}
public function drawSegment(target:Sprite, x:Number, y:Number, r:Number, aStart:Number, aEnd:Number, color:uint=0x0, 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);
}
}
}
感谢您的任何建议!