illustrator插件-拼版功能开发-裁切标记-js脚本开发-ai插件

1.算法程序

  illustrator是矢量编辑软件,画板是绘制处理的重要容器,在印刷方面的一个重要功能就是裁切标记,开发一个裁切标记功能,源代码如下所示:

if (app.documents.length == 0) {
    alert("请先建立一个新文件", "错误");
    var myDoc = app.documents.add();
}
luRes = "dialog {alignChildren: 'fill', text: '裁切标记',margins:[8,8,8,8]\nall: Group { orientation: 'row',alignChildren: 'fill', \n    myType: Panel {text:'类型',alignChildren: 'right',orientation: 'column',bounds:[100,0,225,110],properties:{borderStyle:'sunken'},\n                  lineType: Group { orientation: 'row',  spacing:1,\n                               st: StaticText { text:'角线:' }, \n                             ddl: DropDownList {preferredSize: [54, 20] ,fontsize:3,properties:{items:['日式', '罗马','中式']}},\n                                          } \n                crossType: Group { orientation: 'row',  spacing:1,\n                              cb: Checkbox { text:'套准', value: true}, \n                             ddl: DropDownList {preferredSize: [54, 20],properties:{items:['带圆', '无圆']}},\n                                          } \n                          } \n    mySize: Panel {text:'角线设置',alignChildren: 'fill',orientation: 'column',bounds:[100,0,240,0],properties:{borderStyle:'sunken'},\n                        lineLen: Group { orientation: 'row',  \n                                    s: StaticText { text:'长度:' }, \n                                    e: EditText {text: 6 , preferredSize: [36, 20],active:true}, \n                                    s: StaticText { text:'毫米' }, \n                                              } \n                    lineBleed: Group { orientation: 'row', \n                                    s: StaticText { text:'出血:' }, \n                                    e: EditText { text:3, preferredSize: [36, 20] },\n                                    s: StaticText { text:'毫米' }, \n                                             } \n                  lineStroke: Group { orientation: 'row', \n                                    s: StaticText { text:'描边:' }, \n                                    e: EditText { text:0.25, preferredSize: [36, 20] },\n                                    s: StaticText { text:'点' }, \n                                             } \n                         }  \n           } \nall2: Group { orientation: 'row',alignChildren: 'fill',\n        checkboxes: Panel { text:'选项', orientation:'column', alignChildren:'left',properties:{borderStyle:'black'},\n                 cb1: Checkbox { text:'添加角线图层 ', value: true}, \n                 cb2: Checkbox { text:'添加色标名称', value: true}, \n                 cb3: Checkbox { text:'添加文档信息' , value: true}, \n                 cb6: Checkbox { text:'包含对象边宽' }, \n                 cb4: Checkbox { text:'添加色条框',  value: true}, \n                 cb5: Checkbox { text:'色条框线',alignment: 'center',  value: true}, \n                }\n    myBisector: Panel { text:'等分线',alignChildren: 'left',orientation: 'column',bounds:[100,0,240,0],properties:{borderStyle:'sunken'},\n                               cb: Checkbox {text:'使用', value: true}\n            myUse: Group { orientation: 'column',alignChildren: 'fill',\n                        myHor: Group { orientation: 'row', \n                                    s: StaticText { text:'水平数:' }, \n                                    e: EditText { text:2, preferredSize: [55, 20]},  } \n                      myHor2: Group { orientation: 'row', \n                                    s3: StaticText { text:'切线距:' }, \n                                    e2: EditText { text:6, preferredSize: [25, 20]},\n                                    s4: StaticText { text:'毫米' }, \n                                           } \n                        myVer: Group { orientation: 'row', \n                                    s: StaticText {text:'垂直数:' }, \n                                    e: EditText { text:4, preferredSize: [55, 20] },  } \n                     myVer2: Group { orientation: 'row',  \n                                    s3: StaticText { text:'切线距:' }, \n                                    e2: EditText { text:6, preferredSize: [25, 20]},\n                                    s4: StaticText { text:'毫米' }, \n                                            } \n                                  }\n                            }\n              }\nbuttonGroups: Group { orientation: 'row', alignment: 'center', \ncancelBtn: Button { text:'取消',properties:{name:'cancel'}}, \nokBtn: Button { text:'确定',properties:{name:'ok'}}, \n        }\n}";
var win = new Window(luRes);
win.all.myType.lineType.ddl.selection = win.all.myType.lineType.ddl.items[0];
win.all.myType.crossType.ddl.selection = win.all.myType.crossType.ddl.items[0];
selLine = win.all.myType.lineType.ddl.items[0];
selLine1 = win.all.myType.lineType.ddl.items[1];
selellipse = win.all.myType.crossType.ddl.items[0];
win.all.myType.crossType.cb.onClick = function() {
    win.all.myType.crossType.ddl.enabled = this.value;
};
win.all2.myBisector.cb.onClick = function() {
    win.all2.myBisector.myUse.enabled = this.value;
};
if (win.all2.myBisector.cb.value == true) {
    win.all2.myBisector.cb.notify()
}
win.all2.checkboxes.cb4.onClick = function() {
    win.all2.checkboxes.cb5.enabled = this.value;
};
win.center();
myReturn = win.show();
if (myReturn == true) {
    var docRef = app.activeDocument;
    var pointTomm = 2.83464566929134;
    var pw = 0;
    var ph = 0;
    var x = 0;
    var y = 0;
    var aiver = app.version;
    var fileNameLocation = 0;
    var pageNumberLocation = 0;
    var mCMYK = [setCMYKcolor(100, 0, 0, 0), setCMYKcolor(0, 100, 0, 0), setCMYKcolor(0, 0, 100, 0), setCMYKcolor(0, 0, 0, 100)];
    mCMYK.push(setCMYKcolor(100, 100, 0, 0), setCMYKcolor(100, 0, 100, 0), setCMYKcolor(0, 100, 100, 0), setCMYKcolor(0, 0, 0, 50));
    var colorBarSize = 5 * pointTomm;
    var regRoundSize = 3.6 * pointTomm;
    var myFont = textFonts.getByName("MicrosoftYaHei");
    var myFontSize = 9;
    var lineLen = eval(win.all.mySize.lineLen.e.text) * pointTomm;
    var lineBleed = eval(win.all.mySize.lineBleed.e.text) * pointTomm;
    var hBisector = eval(win.all2.myBisector.myUse.myHor.e.text);
    var vBisector = eval(win.all2.myBisector.myUse.myVer.e.text);
    var hBSpace = eval(win.all2.myBisector.myUse.myHor2.e2.text) * pointTomm;
    var vBSpace = eval(win.all2.myBisector.myUse.myVer2.e2.text) * pointTomm;
    var SW = eval(win.all.mySize.lineStroke.e.text);
    placeCropline = true;
    win.all2.checkboxes.cb1.value ? creatCropMarkLayer = true : creatCropMarkLayer = false;
    win.all2.myBisector.cb.value ? placeBisector = true : placeBisector = false;
    win.all2.checkboxes.cb2.value ? placeColorName = true : placeColorName = false;
    win.all2.checkboxes.cb3.value ? placeFileDateName = placePageSize = true : placeFileDateName = placePageSize = false;
    win.all.myType.crossType.cb.value ? placeRegMark = true : placeRegMark = false;
    win.all2.checkboxes.cb4.value ? placeColorBar = true : placeColorBar = false;
    win.all2.checkboxes.cb5.value ? colorBarStroked = true : colorBarStroked = false;
    if (lineLen <= 0 || lineBleed <= 0 || isNaN(lineLen) == true || isNaN(lineBleed) == true) {
        alert("输入的数值必须大于零!已自动更正为 长度:6mm 出血:3mm。", "错误");
        lineLen = 6 * pointTomm;
        lineBleed = 3 * pointTomm;
    }
    if (creatCropMarkLayer == true) {
        docRef.layers.add();
        docRef.layers[0].name = "角线图层";
    }
    if (docRef.selection.length > 0) {
        var sl = true;
        var obj = docRef.selection;
        var selVB = getBounds(obj);
        var docName = "文件名: " + docRef.name;
        pw = selVB[2] - selVB[0];
        ph = selVB[1] - selVB[3];
        x = selVB[0];
        y = selVB[3];
        for (var i = 0; i < obj.length; i += 1) {
            obj[i].selected = false;
        }
        setOpt();
    } else if (aiver.slice(0, 2) >= 14) {
        var ab = docRef.artboards.length - 1;
        if (ab >= 49) {
            alert("注意:页面数量超过 50 时需要较多的内存与较长的运行时间,请耐心等候。\n当出现 \"PARM\"错误时,请关掉一些不用的软件以释放可用内存!", "提示");
        }
        for (var j = 0; j <= ab; j += 1) {
            docRef.artboards.setActiveArtboardIndex(j);
            var artboardnumber = docRef.artboards.getActiveArtboardIndex() + 1;
            var docName = "文件名: " + docRef.name + "  页码: " + docRef.artboards.length + "-" + artboardnumber;
            pw = docRef.width;
            ph = docRef.height;
            x = docRef.cropBox[0];
            y = docRef.cropBox[1] - ph;
            setOpt();
        }
    } else {
        pw = docRef.width;
        ph = docRef.height;
        var docName = "文件名: " + docRef.name;
        setOpt();
    }
}

function setOpt() {
    regGroup = docRef.groupItems.add();
    textGroup = docRef.groupItems.add();
    colorBarGroup = docRef.groupItems.add();
    cropmark();
    if (placeColorName == true) {
        colorname();
    }
    if (placeColorBar == true) {
        colorBar();
    }
    if (placeBisector == true) {
        Bisector();
    }
    if (placeFileDateName == true) {
        filenameDate();
    }
    if (placeRegMark == true) {
        Regmark();
    }
    if (placePageSize == true) {
        pagesize();
    }
}

function setCMYKcolor(c, m, y, k) {
    var newCMYKcolor = new CMYKColor();
    newCMYKcolor.cyan = c;
    newCMYKcolor.magenta = m;
    newCMYKcolor.yellow = y;
    newCMYKcolor.black = k;
    return newCMYKcolor;
}

function filenameDate() {
    var today = new Date();
    var week = ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"];
    var thisDate = today.getFullYear() + "年" + today.getMonth() + 1 + "月" + today.getDate() + "日" + " " + week[today.getDay()];
    var textString = "文件名: " + docName + "  " + thisDate;
    var textRef = textGroup.textFrames.add();
    textRef.contents = docName + "  " + thisDate;
    textRef.textRange.characterAttributes.size = myFontSize;
    textRef.textRange.characterAttributes.textFont = myFont;
    textRef.textRange.characterAttributes.fillColor = docRef.swatches[1].color;
    textRef.top = (y - 2) - lineBleed;
    textRef.left = ((pw - textRef.width) - lineBleed) + x;
}

function colorname() {
    var textRef = textGroup.textFrames.add();
    textRef.contents = "青色(C) 洋红(M) 黄色(Y) 黑色(K)";
    textRef.textRange.characterAttributes.size = myFontSize;
    textRef.textRange.characterAttributes.textFont = myFont;
    textRef.top = (y - 2) - lineBleed;
    textRef.left = x + lineBleed;
    for (var i = 0; i <= 5; i += 1) {
        textRef.textRange.characters[i].characterAttributes.fillColor = mCMYK[0]
    }
    for (var i = 6; i <= 11; i += 1) {
        textRef.textRange.characters[i].characterAttributes.fillColor = mCMYK[1]
    }
    for (var i = 12; i <= 17; i += 1) {
        textRef.textRange.characters[i].characterAttributes.fillColor = mCMYK[2]
    }
    for (var i = 18; i <= 22; i += 1) {
        textRef.textRange.characters[i].characterAttributes.fillColor = mCMYK[3]
    }
}

function pagesize() {
    var sizeUnit = "MM";
    var sizeX = pw;
    var sizeY = ph;
    switch (docRef.rulerUnits) {
        case RulerUnits.Centimeters:
            sizeUnit = " 厘米";
            sizeX = Math.round(((pw / pointTomm) / 10) * 100) / 100;
            sizeY = Math.round(((ph / pointTomm) / 10) * 100) / 100;
            break;
        case RulerUnits.Inches:
            sizeUnit = " 英吋";
            sizeX = Math.round((pw / 72) * 100) / 100;
            sizeY = Math.round((ph / 72) * 100) / 100;
            break;
        case RulerUnits.Millimeters:
            sizeUnit = " 毫米";
            sizeX = Math.round(((pw / pointTomm) + 0.001) * 100) / 100;
            sizeY = Math.round(((ph / pointTomm) + 0.001) * 100) / 100;
            break;
        case RulerUnits.Points:
            sizeUnit = " 点";
            sizeX = Math.round(pw * 100) / 100;
            sizeY = Math.round(ph * 100) / 100;
            break;
        case RulerUnits.Pixels:
            sizeUnit = " 像素";
            sizeX = Math.round(pw * 100) / 100;
            sizeY = Math.round(ph * 100) / 100;
            break;
        case RulerUnits.Qs:
            sizeUnit = " Ha";
            sizeX = Math.round(pw * 141.111) / 100;
            sizeY = Math.round(ph * 141.111) / 100;
            break;
        default:

    }
    var textPageSize = textGroup.textFrames.add();
    textPageSize.contents = "尺寸: " + sizeX + "X" + sizeY + sizeUnit;
    textPageSize.textRange.characterAttributes.size = myFontSize;
    textPageSize.textRange.characterAttributes.textFont = myFont;
    textPageSize.textRange.characterAttributes.fillColor = docRef.swatches[1].color;
    textPageSize.position = [((x + pw) - lineBleed) - textPageSize.width, y + ph + textPageSize.height + lineBleed];
}

function cropmark() {
    var lineGroup = regGroup.groupItems.add();
    var myLine = {
        line: function(PTS) {
            var myLineSet = lineGroup.pathItems.add();
            myLineSet.setEntirePath(PTS);
            myLineSet.filled = false;
            myLineSet.stroked = true;
            myLineSet.strokeWidth = SW;
            myLineSet.strokeColor = docRef.swatches[1].color;
        }
    };
    if (win.all.myType.lineType.ddl.selection == selLine) {
        var PTS1 = [
            [0, lineLen + lineBleed],
            [lineLen, lineLen + lineBleed],
            [lineLen, 0]
        ];
        myLine.line(PTS1);
        var PTS2 = [
            [0, lineLen],
            [lineLen + lineBleed, lineLen],
            [lineLen + lineBleed, 0]
        ];
        myLine.line(PTS2);
    } else if (win.all.myType.lineType.ddl.selection == selLine1) {
        var PTS1 = [
            [0, lineLen + lineBleed],
            [lineLen, lineLen + lineBleed]
        ];
        myLine.line(PTS1);
        var PTS2 = [
            [lineLen + lineBleed, lineLen],
            [lineLen + lineBleed, 0]
        ];
        myLine.line(PTS2);
    } else {
        var PTS1 = [
            [0, lineLen + lineBleed],
            [lineLen, lineLen + lineBleed]
        ];
        myLine.line(PTS1);
        var PTS2 = [
            [0, lineLen],
            [lineLen + (lineBleed / 2), lineLen]
        ];
        myLine.line(PTS2);
        var PTS3 = [
            [lineLen + lineBleed, lineLen],
            [lineLen + lineBleed, 0]
        ];
        myLine.line(PTS3);
        var PTS4 = [
            [lineLen, lineLen + (lineBleed / 2)],
            [lineLen, 0]
        ];
        myLine.line(PTS4);
    }
    lineGroup.position = [-lineGroup.width + x, y];
    lineGroup2 = lineGroup.duplicate();
    lineGroup2.rotate(90);
    lineGroup2.left = lineGroup2.left + lineGroup2.width + pw;
    lineGroup3 = lineGroup.duplicate();
    lineGroup3.rotate(270);
    lineGroup3.top = lineGroup3.top + lineGroup3.height + ph;
    lineGroup4 = lineGroup2.duplicate();
    lineGroup4.rotate(90);
    lineGroup4.top = lineGroup4.top + lineGroup4.height + ph;
}

function Regmark() {
    var lineGroup = regGroup.groupItems.add();
    if (win.all.myType.crossType.ddl.selection == selellipse) {
        ellipse = lineGroup.pathItems.ellipse((regRoundSize / 2) + y, (-regRoundSize / 2) + x, regRoundSize, regRoundSize, false, true);
        with(ellipse) {
            filled = false;
            stroked = true;
            strokeWidth = SW;
            strokeColor = docRef.swatches[1].color;
        }
    }
    var myLine = {
        line: function(X1, Y1, X2, Y2) {
            var myLineSet = lineGroup.pathItems.add();
            myLineSet.setEntirePath([
                [X1, Y1],
                [X2, Y2]
            ]);
            myLineSet.filled = false;
            myLineSet.stroked = true;
            myLineSet.strokeWidth = SW;
            myLineSet.strokeColor = docRef.swatches[1].color;
        }
    };
    myLine.line((-lineLen / 2) + x, y, (lineLen / 2) + x, y);
    myLine.line(x, -(lineLen + lineBleed) + y, x, lineLen + lineBleed + y);
    lineGroup.position = [(-lineGroup.width - lineBleed) + x, ((ph + lineGroup.height) / 2) + y];
    lineGroup.duplicate().position = [pw + lineBleed + x, ((ph + lineGroup.height) / 2) + y];
    lineGroup.duplicate();
    lineGroup.rotate(90);
    lineGroup.position = [((pw - lineGroup.width) / 2) + x, -lineBleed + y];
    lineGroup.duplicate().position = [((pw - lineGroup.width) / 2) + x, ph + lineGroup.height + lineBleed + y];
}

function colorBar() {
    var rectangle = {
        bar: function(y, x, colorBarSize, fiColor, swColor) {
            var myRectangle = colorBarGroup.pathItems.rectangle(y, x, colorBarSize, colorBarSize);
            myRectangle.fillColor = fiColor;
            myRectangle.stroked = false;
            if (colorBarStroked == true) {
                myRectangle.strokeColor = swColor;
                myRectangle.strokeWidth = SW;
            }
        }
    };
    for (var i = 0; i <= 10; i += 1) {
        rectangle.bar(y + (i * colorBarSize) + colorBarSize + lineBleed, ((-colorBarSize - lineBleed) + x) - 1, colorBarSize, colorBarSize, setCMYKcolor(10 * i, 0, 0, 0), mCMYK[0]);
        rectangle.bar((((y + (i * colorBarSize)) - (10 * colorBarSize)) - lineBleed) + ph, ((-colorBarSize - lineBleed) + x) - 1, colorBarSize, colorBarSize, setCMYKcolor(0, 10 * i, 0, 0), mCMYK[1]);
        rectangle.bar((((y + (i * colorBarSize)) - (10 * colorBarSize)) - lineBleed) + ph, lineBleed + x + pw + 1, colorBarSize, colorBarSize, setCMYKcolor(0, 0, 10 * i, 0), mCMYK[2]);
        rectangle.bar(y + (i * colorBarSize) + colorBarSize + lineBleed, lineBleed + x + pw + 1, colorBarSize, colorBarSize, setCMYKcolor(0, 0, 0, 10 * i), mCMYK[3]);
    }
    for (var j = 0; j <= 7; j += 1) {
        rectangle.bar(y + ph + colorBarSize + lineBleed + 1, lineBleed + x + (j * colorBarSize), colorBarSize, colorBarSize, mCMYK[j], docRef.swatches[1].color)
    }
}

function Bisector() {
    var lineGroup = regGroup.groupItems.add();
    var myLine = {
        line: function(X1, Y1, X2, Y2) {
            var myLineSet = lineGroup.pathItems.add();
            myLineSet.setEntirePath([
                [X1, Y1],
                [X2, Y2]
            ]);
            myLineSet.filled = false;
            myLineSet.stroked = true;
            myLineSet.strokeWidth = SW;
            myLineSet.strokeColor = docRef.swatches[1].color;
        }
    };
    if (vBSpace == 0) {
        for (var vML = 1; vML < vBisector; vML += 1) {
            var vEquidistant = ph / vBisector;
            myLine.line((x - lineLen) - lineBleed, y + (vML * vEquidistant), x - lineBleed, y + (vML * vEquidistant));
            myLine.line(x + lineLen + lineBleed + pw, y + (vML * vEquidistant), x + lineBleed + pw, y + (vML * vEquidistant));
        }
    } else {
        for (var vML = 1; vML < vBisector; vML += 1) {
            var vEquidistant = (ph + vBSpace) / vBisector;
            myLine.line((x - lineLen) - lineBleed, y + (vML * vEquidistant), x - lineBleed, y + (vML * vEquidistant));
            myLine.line((x - lineLen) - lineBleed, (y - vBSpace) + (vML * vEquidistant), x - lineBleed, (y - vBSpace) + (vML * vEquidistant));
            myLine.line(x + lineLen + lineBleed + pw, y + (vML * vEquidistant), x + lineBleed + pw, y + (vML * vEquidistant));
            myLine.line(x + lineLen + lineBleed + pw, (y - vBSpace) + (vML * vEquidistant), x + lineBleed + pw, (y - vBSpace) + (vML * vEquidistant));
        }
    }
    if (hBSpace == 0) {
        for (var hML = 1; hML < hBisector; hML += 1) {
            var hEquidistant = pw / hBisector;
            myLine.line(x + (hML * hEquidistant), (y - lineLen) - lineBleed, x + (hML * hEquidistant), y - lineBleed);
            myLine.line(x + (hML * hEquidistant), y + ph + lineBleed + lineLen, x + (hML * hEquidistant), y + ph + lineBleed);
        }
    } else {
        for (var hML = 1; hML < hBisector; hML += 1) {
            var hEquidistant = (pw + hBSpace) / hBisector;
            myLine.line(x + (hML * hEquidistant), (y - lineLen) - lineBleed, x + (hML * hEquidistant), y - lineBleed);
            myLine.line(x + (hML * hEquidistant), y + ph + lineBleed + lineLen, x + (hML * hEquidistant), y + ph + lineBleed);
            myLine.line((x + (hML * hEquidistant)) - hBSpace, (y - lineLen) - lineBleed, (x + (hML * hEquidistant)) - hBSpace, y - lineBleed);
            myLine.line((x + (hML * hEquidistant)) - hBSpace, y + ph + lineBleed + lineLen, (x + (hML * hEquidistant)) - hBSpace, y + ph + lineBleed);
        }
    }
}

function getBounds(obj) {
    var selObj1 = new Array();
    var selObj2 = new Array();
    var vgb1 = new Array();
    var vgb2 = new Array();
    var n = obj.length;
    if (n > 0) {
        if (obj[0].typename == "GroupItem" && obj[0].clipped && obj[0].pageItems.length > 1) {
            clipObj = obj[0].pathItems[0].geometricBounds;
            vgb1 = clipObj;
        } else {
            selObj1 = obj[0];
            if (win.all2.checkboxes.cb6.value) {
                vgb1 = selObj1.visibleBounds;
            } else {
                vgb1 = selObj1.geometricBounds;
            }
        }
        if (n > 1) {
            for (var i = 1; i < n; i += 1) {
                selObj2 = obj[i];
                if (obj[i].typename == "GroupItem" && obj[i].clipped && obj[i].pageItems.length > 1) {
                    if (win.all2.checkboxes.cb6.value) {
                        vgb2 = obj[i].pathItems[0].visibleBounds;
                    } else {
                        vgb2 = obj[i].pathItems[0].geometricBounds;
                    }
                } else {
                    if (win.all2.checkboxes.cb6.value) {
                        vgb2 = selObj2.visibleBounds;
                    } else {
                        vgb2 = selObj2.geometricBounds;
                    }
                }
                if (vgb1[0] > vgb2[0]) {
                    vgb1[0] = vgb2[0]
                }
                if (vgb1[1] < vgb2[1]) {
                    vgb1[1] = vgb2[1]
                }
                if (vgb1[2] < vgb2[2]) {
                    vgb1[2] = vgb2[2]
                }
                if (vgb1[3] > vgb2[3]) {
                    vgb1[3] = vgb2[3]
                }
            }
        }
    }
    return vgb1;
}

2.文本转执行

  使用记事本或者notepad++等文本编辑器,将代码拷贝至文本文件,然后修改后缀名为js或者jsx,最后再illustrator软件菜单文件》脚本》其它脚本,选择脚本文件,点执行即可,也可以将脚本放在预设文件夹内,会显示再脚本下的二级子菜单。如下图所示:


AI脚本执行.png

3.作者答疑


  代码长度过长,如需全部项目或有疑问,请留言。

提示: 作者知了-联系方式1
提示: 作者知了-联系方式2

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,869评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,716评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,223评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,047评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,089评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,839评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,516评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,410评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,920评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,052评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,179评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,868评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,522评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,070评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,186评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,487评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,162评论 2 356

推荐阅读更多精彩内容