Анимация пути тени CALayer

Я анимирую путь тени для CALayer.

Размер рамки изменяется правильно, но тень не масштабируется.

Вместо этого тень начинается с окончательного размера CGSize(20,20)и сохраняется на протяжении всей анимации, даже несмотря на то, что я установил shadowPath на начальное значение

[CATransaction begin];
[CATransaction setAnimationDuration: 0];
[CATransaction setDisableActions: TRUE];
    layer.frame = CGRectMake(0,0,10,10);
    layer.shadowPath = [UIBezierPath bezierPathWithRect:layer.bounds].CGPath;
[CATransaction commit];

[CATransaction begin];

    [CATransaction setValue:[NSNumber numberWithFloat:10] forKey:kCATransactionAnimationDuration];
    layer.frame = CGRectMake(0,0,20,20);
    layer.shadowPath = [UIBezierPath bezierPathWithRect:tile.bounds].CGPath;

[CATransaction commit];
-. 121 ---1576178- Использование javax.sound.sampled.Clip для воспроизведения, зацикливания и остановки нескольких звуков в игре. Непредвиденные ошибки Я пытаюсь воспроизвести два wav-звука одновременно во время игры (Фоновая музыка и эффект ). Сначала я создал этот кусок кода, используя другой обработчик звука в java, который будет обрабатывать воспроизведение,...

Я пытаюсь воспроизвести два wav-звука одновременно во время игры (Фоновая музыка и эффект ). Сначала я создал этот фрагмент кода, используя другой обработчик звука в java, который будет обрабатывать воспроизведение, остановку и зацикливание звука. Эта конструкция будет воспроизводить фоновую музыку или эффект, но только по одному за раз. Я посмотрел в Интернете, и мне сказали использовать javax.sound.sampled.Clip для обработки звуков, поэтому повторно использовал ту же конструкцию (play, stop, loop ), но переключил ее на использование javax.sound.sampled.Clip. Теперь я совсем потерялся. Из того, что я прочитал до сих пор, я сделал все правильно и не получил ошибок в редакторе eclipse, но когда я запускаю его, я получаю одну из двух ошибок. В eclipse (, работающем в Linux ), генерируется исключение LineUnavailableException. В eclipse (, работающем в Windows 7 ), я получаю исключение java.lang.NullPointerException в разделе цикла ()этого кода. Если бы вы могли показать мне, что я делаю неправильно, или указать мне на соответствующую документацию, я был бы признателен. Я предполагаю, что это что-то с моим кодом, который обрабатывает исключения, но я не уверен.Если вы заметите какие-либо другие отвратительные ошибки в коде, пожалуйста, дайте мне знать, что я стараюсь быть лучшим программистом, на который я способен, и очень ценю конструктивную критику. Спасибо за ваше время.

    import java.io.File;
    import java.io.IOException;
    import java.net.MalformedURLException;
    import javax.sound.sampled.AudioInputStream;
    import javax.sound.sampled.AudioSystem;
    import javax.sound.sampled.Clip;
    import javax.sound.sampled.LineUnavailableException;
    import javax.sound.sampled.UnsupportedAudioFileException;

    /**
     * Handles play, pause, and looping of sounds for the game.
     * @author Tyler Thomas
     *
     */
    public class Sound {
        private Clip myClip;
        public Sound(String fileName) {
                try {
                    File file = new File(fileName);
                    if (file.exists()) {
                        Clip myClip = AudioSystem.getClip();
                        AudioInputStream ais = AudioSystem.getAudioInputStream(file.toURI().toURL());
                        myClip.open(ais);
                    }
                    else {
                        throw new RuntimeException("Sound: file not found: " + fileName);
                    }
                }
                catch (MalformedURLException e) {
                    throw new RuntimeException("Sound: Malformed URL: " + e);
                }
                catch (UnsupportedAudioFileException e) {
                    throw new RuntimeException("Sound: Unsupported Audio File: " + e);
                }
                catch (IOException e) {
                    throw new RuntimeException("Sound: Input/Output Error: " + e);
                }
                catch (LineUnavailableException e) {
                    throw new RuntimeException("Sound: Line Unavailable: " + e);
                }
        }
        public void play(){
            myClip.setFramePosition(0);  // Must always rewind!
            myClip.loop(0);
            myClip.start();
        }
        public void loop(){
            myClip.loop(Clip.LOOP_CONTINUOUSLY);
        }
        public void stop(){
            myClip.stop();
        }
    }
6
задан Cœur 21 April 2019 в 15:33
поделиться