- *bug *идиотизм *ActionScriptпродолжаю рубрику идиотизмов.
допустим есть класс ( не спрашивайте, почему он такой. ):
package {
import flash.media.Sound;
import flash.media.SoundLoaderContext;
import flash.net.URLRequest;
public class SSS extends Sound {
public function SSS() {
super();
}
public override function load(stream:URLRequest, context:SoundLoaderContext=null):void {
throw new Error( 'неведомоя хуета' );
}
}
}
как вы думаете, что мы получим в резуотате выполнения такого класса?
var s:SSS = new SSS();
правильно! мы получим НЕВЕДОМУЮ ХУЕТУ
Error: неведомоя хуета
at SSS/load()[D:\__workspace\test\src\test.as:25]
at flash.media::Sound()
at SSS()[D:\__workspace\test\src\test.as:22]
at test()[D:\__workspace\test\src\test.as:10]
вот спрашивается почему адоба посчитала, что метод load у класса Sound надо вызывать обязательно ( даже если в конструкторе передали null )?
лечится это чудо хаком, который запрещает вызывать super():
public function SSS() {
if ( !true ) { // суки из адобы, вызывают load в любом случаи. идиоты.
super();
}
}
в общем топик о двойном идиотизме =)#553911 from Talk.v1058F3453F2, 6 months ago
Replies (15)
- @valyard:а какой-нить другой неведомой хуеты ты не получишь в итоге? разве в super() на происходит каких-то важных вещей?#553911/1 from home, 6 months ago
- @DandyDan:А не проще ли не швырять неведомую хуету в методе load?#553911/6 from 2646892006126792560237721, 6 months ago
- @DandyDan:я имею в виду, раз уж выяснили, что метод вызывается "сам по себе", то вместо хака, запрещающего вызов super(), можно в самом load() сделать какую-нибудь защиту. типа if (!stream) return;#553911/8 from 2646892006126792560237721, 6 months ago
- @DandyDan:потому что хак с if(!true) может перестать работать в будущих версиях компилятора или в в компиляторах сторонних фирм, или после обработки каким-нибудь оптимизатором. поэтому, на мой взгляд, нужно что-то более надёжное и менее хакообразное.#553911/10 from 2646892006126792560237721, 6 months ago
- @svitovyda@gmail.com:обьясните тем, кто в танке: почему
public function SSS() {
if ( !true ) { // суки из адобы, вызывают load в любом случаи. идиоты.
super();
}
}
а не просто
public function SSS() {
}
?#553911/12 from Miranda04243D6D, 6 months ago - @blooddy:@svitovyda@gmail.com а вы пост целиком прочитали?#553911/13 from Talk.v105C011BA46, 6 months ago, in reply to /12
- @blooddy:@svitovyda@gmail.com а, прошу прощения, понял. это я в продолжении рассказал #560275#553911/14 from Talk.v105C011BA46, 6 months ago, in reply to /12
- @blooddy:#553911/15 from Talk.v10567DB9CE2, 6 months ago
