Пример #1
0
        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;
        }
Пример #2
0
        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());
        }
Пример #3
0
        // 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));
                }
            }
        }
Пример #4
0
        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);
        }