![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Mar 2015
Сообщений: 12
|
Здравствуйте, пишу класс для создания кнопки (пока убрал обработку событий), вылетает ошибка по сабжу, скажите пожалуйста, что я делаю не так?
Главный класс package { import flash.display.Sprite; //import com.engine.Sounds; import com.engine.Buttons; public class Main extends Sprite { public function Main() { Buttons.addButton(EmbedImages.imgSoundOn, 700, 30); } } } package com.engine { import flash.display.Sprite; import flash.display.Bitmap; public class Buttons extends Sprite { public static function addButton(bitmap:Bitmap, x:Number, y:Number):Sprite { var button:Sprite = new Sprite(); button.buttonMode = true; button.x = x; button.y = y; addChild(button); button.addChild(bitmap); return button; } } } |
|
|||||
|
[+4 06.05.14]
|
У class'a нет свойства addChild/ - вы же статик юзаете. public function addButton - вот так будет работать.
А в мейне надо var buttons:Buttons = new Buttons() buttons.addButton(...))
__________________
Марк Tween |
|
|||||
package { import flash.display.Sprite; //import com.engine.Sounds; import com.engine.Buttons; public class Main extends Sprite { public function Main() { addChild(getButton(EmbedImages.imgSoundOn, 700, 30)); } } private function getButton(bitmap:Bitmap, x:Number, y:Number):Sprite { var button:Sprite = new Sprite(); button.buttonMode = true; button.x = x; button.y = y; addChild(button); button.addChild(bitmap); return button; } } |
|
|||||
|
Регистрация: Mar 2015
Сообщений: 12
|
in4core, благодарю за отклик, но после изменений в окне изображение не появилось, варнингов компилятор не выдал, Standalone версия проигрывателя ошибок не выдала.
caseyryan, спасибо за помощь, именно так у меня изначально все было и реализовано. Код стал похож на лапшу, захотелось все постепенно оформлять в классы. Получается, что никак не обойтись без создания внутри главного класса? Вот как у меня было сделано ранее package { import flash.display.Sprite; import flash.display.Bitmap; import flash.events.Event; import flash.events.MouseEvent; import flash.net.SharedObject; import com.engine.Sounds; [SWF(backgroundColor="#00ccff", width="800", height="730", frameRate="30")] public class main extends Sprite { [Embed(source="data/config.json", mimeType="application/octet-stream")] private static const Config:Class; [Embed(source = "data/sound_on.png", mimeType = "image/png")] private static const iSoundOn:Class; [Embed(source = "data/sound_off.png", mimeType = "image/png")] private static const iSoundOff:Class; [Embed(source="data/click.mp3")] private var sndClick:Class; [Embed(source="data/theme.mp3")] private var sndTheme:Class; public var theme:Object; public var startButton:Sprite; public var stopButton:Sprite; public var localData:SharedObject; public function main() { localData = SharedObject.getLocal("localData"); if(localData.data.music == undefined) localData.data.music = true; if(localData.data.music) { theme = Sounds.playSound(sndTheme, 10, true); } startButton = addButton(new iSoundOn(), "soundon", 700, 30); stopButton = addButton(new iSoundOff(), "soundoff", 700, 30); startButton.visible = false; } private function addImage(image:Class, x:int, y:int):void { var bitmap:Bitmap = new image(); bitmap.x = x; bitmap.y = y; addChild(bitmap); } private function addButton(bitmap:Bitmap, name:String, x:int, y:int):Sprite { var button:Sprite = new Sprite(); button.buttonMode = true; button.x = x; button.y = y; button.addEventListener(MouseEvent.CLICK, mouseClick); button.addEventListener(MouseEvent.MOUSE_OVER, mouseOver); button.addEventListener(MouseEvent.MOUSE_OUT, mouseOut); addChild(button); button.addChild(bitmap); function mouseClick():void { switch(name) { case "soundon": startButton.visible = false; stopButton.visible = true; theme = Sounds.playSound(sndTheme, 10, true); localData.data.music = true; break; case "soundoff": startButton.visible = true; stopButton.visible = false; Sounds.stopSound(theme); localData.data.music = false; break; } } function mouseOver():void { button.alpha = 0.85; } function mouseOut():void { button.alpha = 1; } return button; } } } |
|
|||||
|
Можно сделать статический метод, но он должен лишь генерировать и возвращать кнопку, без всяких addChild'ов
package com.engine { import flash.display.Sprite; import flash.display.Bitmap; public class Buttons { public static function getButton(bitmap:Bitmap, x:int, y:int):Sprite { var button:Sprite = new Sprite(); button.buttonMode = true; button.addChild(bitmap); button.x = x; button.y = y; return button; } } } package { import flash.display.Sprite; //import com.engine.Sounds; import com.engine.Buttons; public class Main extends Sprite { public function Main() { addChild(Buttons.getButton(EmbedImages.imgSoundOn, 70, 30)); } } } |
|
|||||
|
Регистрация: Mar 2015
Сообщений: 12
|
Спасибо большое, все получилось!
|
![]() |
![]() |
Часовой пояс GMT +4, время: 02:03. |
|
|
« Предыдущая тема | Следующая тема » |
|
|