void InitParticleBase(ref CCParticleBase particleBase) { float timeToLive = Math.Max(0, Life + LifeVar * CCRandom.Float_Minus1_1()); particleBase.TimeToLive = timeToLive; CCPoint particlePos; particlePos.X = SourcePosition.X + PositionVar.X * CCRandom.Float_Minus1_1(); particlePos.Y = SourcePosition.Y + PositionVar.Y * CCRandom.Float_Minus1_1(); particleBase.Position = particlePos; CCColor4F start = new CCColor4F(); start.R = MathHelper.Clamp(StartColor.R + StartColorVar.R * CCRandom.Float_Minus1_1(), 0, 1); start.G = MathHelper.Clamp(StartColor.G + StartColorVar.G * CCRandom.Float_Minus1_1(), 0, 1); start.B = MathHelper.Clamp(StartColor.B + StartColorVar.B * CCRandom.Float_Minus1_1(), 0, 1); start.A = MathHelper.Clamp(StartColor.A + StartColorVar.A * CCRandom.Float_Minus1_1(), 0, 1); particleBase.Color = start; CCColor4F end = new CCColor4F(); end.R = MathHelper.Clamp(EndColor.R + EndColorVar.R * CCRandom.Float_Minus1_1(), 0, 1); end.G = MathHelper.Clamp(EndColor.G + EndColorVar.G * CCRandom.Float_Minus1_1(), 0, 1); end.B = MathHelper.Clamp(EndColor.B + EndColorVar.B * CCRandom.Float_Minus1_1(), 0, 1); end.A = MathHelper.Clamp(EndColor.A + EndColorVar.A * CCRandom.Float_Minus1_1(), 0, 1); CCColor4F deltaColor = new CCColor4F(); deltaColor.R = (end.R - start.R) / timeToLive; deltaColor.G = (end.G - start.G) / timeToLive; deltaColor.B = (end.B - start.B) / timeToLive; deltaColor.A = (end.A - start.A) / timeToLive; particleBase.DeltaColor = deltaColor; float startSize = Math.Max(0, StartSize + StartSizeVar * CCRandom.Float_Minus1_1()); particleBase.Size = startSize; if (EndSize == ParticleStartSizeEqualToEndSize) { particleBase.DeltaSize = 0; } else { float endS = EndSize + EndSizeVar * CCRandom.Float_Minus1_1(); endS = Math.Max(0, endS); particleBase.DeltaSize = (endS - startSize) / timeToLive; } float startSpin = StartSpin + StartSpinVar * CCRandom.Float_Minus1_1(); float endSpin = EndSpin + EndSpinVar * CCRandom.Float_Minus1_1(); particleBase.Rotation = startSpin; particleBase.DeltaRotation = (endSpin - startSpin) / timeToLive; particleBase.StartPosition = Position; }
void InitParticle(ref CCParticleRadial particleRadial, ref CCParticleBase particleBase) { InitParticleBase(ref particleBase); // direction float a = MathHelper.ToRadians(Angle + AngleVar * CCRandom.Float_Minus1_1()); // Set the default diameter of the particle from the source position float startRadius = RadialMode.StartRadius + RadialMode.StartRadiusVar * CCRandom.Float_Minus1_1(); float endRadius = RadialMode.EndRadius + RadialMode.EndRadiusVar * CCRandom.Float_Minus1_1(); particleRadial.Radius = startRadius; particleRadial.DeltaRadius = (RadialMode.EndRadius == ParticleStartRadiusEqualToEndRadius) ? 0 : (endRadius - startRadius) / particleBase.TimeToLive; particleRadial.Angle = a; particleRadial.DegreesPerSecond = MathHelper.ToRadians(RadialMode.RotatePerSecond + RadialMode.RotatePerSecondVar * CCRandom.Float_Minus1_1()); }
// Initialise particle void InitParticle(ref CCParticleGravity particleGrav, ref CCParticleBase particleBase) { InitParticleBase(ref particleBase); // direction float a = MathHelper.ToRadians(Angle + AngleVar * CCRandom.Float_Minus1_1()); if (EmitterMode == CCEmitterMode.Gravity) { CCPoint v = new CCPoint(CCMathHelper.Cos(a), CCMathHelper.Sin(a)); float s = GravityMode.Speed + GravityMode.SpeedVar * CCRandom.Float_Minus1_1(); particleGrav.Direction = v * s; particleGrav.RadialAccel = GravityMode.RadialAccel + GravityMode.RadialAccelVar * CCRandom.Float_Minus1_1(); particleGrav.TangentialAccel = GravityMode.TangentialAccel + GravityMode.TangentialAccelVar * CCRandom.Float_Minus1_1(); if (GravityMode.RotationIsDir) { particleBase.Rotation = -MathHelper.ToDegrees(CCPoint.ToAngle(particleGrav.Direction)); } } }
public virtual bool onTextFieldDeleteBackward(CCTextFieldTTF pSender, string delText, int nLen) { // create a delete text sprite and do some action CCLabelTtf label = new CCLabelTtf(delText, TextInputTestScene.FONT_NAME, TextInputTestScene.FONT_SIZE); this.AddChild(label); // move the sprite to fly out CCPoint beginPos = pSender.Position; CCSize textfieldSize = pSender.ContentSize; CCSize labelSize = label.ContentSize; beginPos.X += (textfieldSize.Width - labelSize.Width) / 2.0f; int RAND_MAX = 32767; CCRandom rand = new CCRandom(); CCSize winSize = Layer.VisibleBoundsWorldspace.Size; CCPoint endPos = new CCPoint(-winSize.Width / 4.0f, winSize.Height * (0.5f + (float)CCRandom.Next() / (2.0f * RAND_MAX))); float duration = 1; float rotateDuration = 0.2f; int repeatTime = 5; label.Position = beginPos; CCAction seq = new CCSequence( new CCSpawn( new CCMoveTo(duration, endPos), new CCRepeat( new CCRotateBy(rotateDuration, (CCRandom.Next() % 2 > 0) ? 360 : -360), (uint)repeatTime), new CCFadeOut(duration)), new CCCallFuncN(callbackRemoveNodeWhenDidAction)); label.RunAction(seq); return(false); }