Automated ねるねるねるね
forked from ねるねるねるね (diff: 85)
ActionScript3 source code
/**
* Copyright phi16 ( http://wonderfl.net/user/phi16 )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/dwdU
*/
// forked from phi16's ねるねるねるね
package {
import flash.text.FontStyle;
import flash.geom.Point;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
import flash.text.TextFormat;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
public class Neru extends Sprite {
public var spr:Sprite=new Sprite();
public var w:Number=465,h:Number=465;
public var neData:Array=[55.741471,10.28401,4.79822,0.021,9.59645,0.0421,14.394669,0.0631,-5.261209,4.31419,-10.522419,8.62839,-15.783629,12.94258,0,0,6.37659,-4.48255,13.70019,-2.33598,3.661809,1.07329,5.271739,2.856843,5.934649,4.458883,0.66292,1.60204,0.37881,3.022567,0.25254,3.369807,-0.25254,0.69448,-0.78921,5.65708,-9.733549,6.74007,-4.62955,0.56055,-5.44009,-1.65231,-5.36171,-2.81243,0.11817,-1.74924,1.20883,-3.06318,3.54164,-3.04376,2.10739,0.0175,3.04624,1.34161,3.63023,2.19392,0.584,0.85232,0.72605,1.81512,0.97859,2.85684];
public var ruData:Array=[47.547019,15.301239,3.78807,-0.0421,7.57615,-0.0842,11.36422,-0.12627,-3.40926,5.3033,-6.81853,10.6066,-10.22779,15.9099,4.12479,-3.43031,8.0286,-6.13457,12.69003,-9.34391,0,0,4.54569,-3.12515,6.69227,-3.4724,3.77923,-0.61136,5.3033,2.58852,5.3033,2.58852,0,0,1.76776,2.65165,0.31567,9.65958,-1.45209,7.00794,-7.00793,4.48255,-7.00793,4.48255,-1.53407,-0.82854,-1.8324,-2.22846,-0.44195,-3.78807,0,0,1.95718,-2.58851,5.99779,-0.94702,4.04061,1.6415,5.93464,3.15673,5.93464,3.15673];
public var stick:Array=[52.534649,9.619129,0,26.01143,0,26.01143,0,26.01143];
public var stickRu:Point=new Point(42,-30);
public var fuPos:Point=new Point(-120/2,-75/2);
public var dataSize:int=10;
public var time:Number=0;
public var rus:Array=new Array();
public var sendRu:int=0;
public var curRu:int=-5;
public var pumpPos:Number=0;
public var u:int=4;
public var pushed:int=-1;
public var tef:TextField=new TextField();
public var sPos:Array=[w-125,w-120,w-120];
public var sName:Array=["Perfect","Cool","Good"];
public var next:Boolean=false;//Ne.Ru
public function Neru() {
this.addChild(spr);
this.addEventListener(Event.ENTER_FRAME,frame);
{
tef.defaultTextFormat=new TextFormat("Arial",30,0xffffff);
tef.defaultTextFormat.align="center";
tef.x=w-135;
tef.y=300;
tef.width=100;
tef.height=100;
tef.text="Test";
tef.alpha=0;
addChild(tef);
}
for(var i:int=0;i<10;i++){
rus.push(new Ru(w+100,300,sendRu));
sendRu++;
}
}
public function frame(e:Event):void{
spr.graphics.clear();
spr.graphics.beginFill(0xffffff);
spr.graphics.drawRect(0,0,w,h);
spr.graphics.beginFill(0x602f00);
spr.graphics.drawRect(0,h/2+40,w,h/2-40);
spr.graphics.beginFill(0x854720);
spr.graphics.drawRect(0,h/2+50,w,h/2-50);
spr.graphics.endFill();
spr.graphics.lineStyle(12,0x000000);
spr.graphics.moveTo(w-90,0);
spr.graphics.lineTo(w-90,pumpPos+h/6);
pumpPos+=(0-pumpPos)/4.0;
tef.alpha+=(0-tef.alpha)/8.0;
spr.graphics.lineStyle(6,0x000000);
drawNeru(100,100,2,(Math.sin(time/4)+1)/2*1.2);
while(rus.length<10){
rus.push(new Ru(w+100,300,sendRu));
sendRu++;
}
if(time%30==0){
curRu++;
}else if(time%60==15){
pumpPos=h/12+h/3;
u=0;
}
for(var i:int=0;i<rus.length;i++){
if(rus[i].x<-100){
rus.splice(i,1),i--;
continue;
}
if(u==3 && !rus[i].onStick){
if(w-110<rus[i].x && rus[i].x<w-100 && pushed!=rus[i].p){
rus[i].onStick=true;
rus[i].stickP.x=stickRu.x;
rus[i].stickP.y=stickRu.y;
pushed=rus[i].p;
var cu:int=Math.abs(rus[i].x-(w-105));
tef.x=sPos[Math.floor((cu+1)/2)];
tef.text=sName[Math.floor((cu+1)/2)];
tef.alpha=1;
}else if(w-165<rus[i].x && rus[i].x<45){
pushed=rus[i].p;
tef.x=w-115;
tef.text="Bad";
tef.alpha=1;
}
}
rus[i].draw(this);
rus[i].tick(curRu);
}
time++;
u++;
}
public function drawNeru(x:Number, y:Number, s:Number, g:Number):void{
var dx:Number=x+(fuPos.x+linear(neData[0],ruData[0],g))*s;
var dy:Number=y+(fuPos.y+linear(neData[1],ruData[1],g))*s;
var cx:Number=0,cy:Number=0;
spr.graphics.moveTo(dx,dy);
for(var i:int=2;i<2+dataSize*6;i+=6){
spr.graphics.cubicCurveTo(dx+(cx+linear(neData[i],ruData[i],g))*s,
dy+(cy+linear(neData[i+1],ruData[i+1],g))*s,
dx+(cx+linear(neData[i+2],ruData[i+2],g))*s,
dy+(cy+linear(neData[i+3],ruData[i+3],g))*s,
dx+(cx+linear(neData[i+4],ruData[i+4],g))*s,
dy+(cy+linear(neData[i+5],ruData[i+5],g))*s);
cx+=linear(neData[i+4],ruData[i+4],g);
cy+=linear(neData[i+5],ruData[i+5],g);
}
}
public function drawStick(x:Number, y:Number, s:Number):void{
var dx:Number=x+(fuPos.x+stick[0])*s;
var dy:Number=y+(fuPos.y+stick[1])*s;
spr.graphics.moveTo(dx,dy);
for(var i:int=2;i<8;i+=6){
spr.graphics.cubicCurveTo(dx+stick[i]*s,
dy+stick[i+1]*s,
dx+stick[i+2]*s,
dy+stick[i+3]*s,
dx+stick[i+4]*s,
dy+stick[i+5]*s);
}
}
public function linear(a:Number, b:Number, g:Number):Number{
return a*(1-g)+b*g;
}
}
}
import flash.display.Graphics;
import flash.geom.Point;
class Ru{
public var x:Number,y:Number,tx:Number;
public var p:int;
public var grade:Number=0;
public var onStick:Boolean;
public var stickP:Point=new Point(0,0);
function Ru(x_:Number, y_:Number,p_:int){
x=x_,y=y_;
tx=x;
p=p_;
}
public function draw(n:Neru):void{
n.spr.graphics.lineStyle(0,0,0);
n.spr.graphics.beginFill(0,0.3);
n.spr.graphics.drawEllipse(x-30,y-13,80,20);
n.spr.graphics.endFill();
n.spr.graphics.lineStyle(12,0x000000);
n.drawNeru(x,y,4,grade);
if(onStick){
n.spr.graphics.lineStyle(12,0x000000);
n.drawStick(x+stickP.x,y+stickP.y,4);
}
n.spr.graphics.lineStyle(6,mkC(0+64*grade,64-64*grade,0+64*grade));
n.drawNeru(x,y,4,grade);
if(onStick){
n.spr.graphics.lineStyle(6,mkC(64*grade,0,64*grade));
n.drawStick(x+stickP.x,y+stickP.y,4);
}
}
public function tick(i:int):void{
tx=(p-i)*140+(465-105)-280;
x+=(tx-x)/4.0;
if(onStick){
grade+=(1-grade)/4.0;
stickP.x+=(0-stickP.x)/4.0;
stickP.y+=(0-stickP.y)/4.0;
}
}
public function mkC(r:int,g:int,b:int):int{
return r*65536+g*256+b;
}
}
